jquery에서 외부 URL을 호출하는 방법
저는 jquery를 사용하여 Facebook 벽에 댓글을 달려고 합니다.
단, 외부 URL을 알 수 없는 Ajax 콜입니다.
어떻게 외부 URL을 jquery와 함께 사용할 수 있는지 설명할 수 있나요?
다음은 제 코드입니다.
var fbUrl="https://graph.facebook.com/16453004404_481759124404/comments?access_token=my_token";
$.ajax({
url: fbURL ,
data: "message="+commentdata,
type: 'POST',
success: function (resp) {
alert(resp);
},
error: function(e){
alert('Error: '+e);
}
});
xmlhttprequest 오류를 발생시킵니다.
이 답들은 모두 틀렸어요!
코멘트에서 말씀드린 것처럼 URL이 "Same origin policy"에 실패했기 때문에 이 오류가 발생하는 이유는 AJAX 함수는 다른 도메인에 접속할 수 있습니다.Nick Cravers는 다음과 같은 질문에 대답합니다.
&callback=을 추가하여 $.getJSON()을 사용하여 JSONP 동작을 트리거해야 합니까?다음과 같이 쿼리 스트링에 표시됩니다.
$.getJSON("http://en.wikipedia.org/w/api.php?action=query&prop=revisions&rvprop=content&titles="+title+"&format=json&callback=?", function(data) { doSomethingWith(data); });
여기서 테스트할 수 있습니다.
JSONP를 사용하지 않으면 XmlHttpRequest가 데이터를 반환하지 못하도록 차단하는 동일한 원본 정책에 도달하게 됩니다.
이 점에 유의하여 다음 코드가 동작합니다.
var fbURL="https://graph.facebook.com/16453004404_481759124404/comments?access_token=my_token";
$.ajax({
url: fbURL+"&callback=?",
data: "message="+commentdata,
type: 'POST',
success: function (resp) {
alert(resp);
},
error: function(e) {
alert('Error: '+e);
}
});
JQuery 및 PHP
PHP 파일 "contenido.php":
<?php
$mURL = $_GET['url'];
echo file_get_contents($mURL);
?>
html:
<script type="text/javascript" src="js/jquery/jquery.min.js"></script>
<script type="text/javascript">
function getContent(pUrl, pDivDestino){
var mDivDestino = $('#'+pDivDestino);
$.ajax({
type : 'GET',
url : 'contenido.php',
dataType : 'html',
data: {
url : pUrl
},
success : function(data){
mDivDestino.html(data);
}
});
}
</script>
<a href="#" onclick="javascript:getContent('http://www.google.com/', 'contenido')">Get Google</a>
<div id="contenido"></div>
사이트 간 스크립팅 문제입니다.일반적인 최신 브라우저에서는 다른 URL로 요청을 보낼 수 없습니다.
유일한 방법은 MANOJ와 Fernando가 제안하는 internel PHP 코드를 사용하는 것이라고 생각합니다.
curl post/get in php file on your server --> 이 php 파일을 ajax로 호출합니다.
PHP 파일에는 (fb.php)라고 되어 있습니다.
$commentdata=$_GET['commentdata'];
$fbUrl="https://graph.facebook.com/16453004404_481759124404/comments?access_token=my_token";
curl_setopt($ch, CURLOPT_URL,$fbUrl);
curl_setopt($ch, CURLOPT_POST, 1);
// POST data here
curl_setopt($ch, CURLOPT_POSTFIELDS,
"message=".$commentdata);
// receive server response ...
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
$server_output = curl_exec ($ch);
echo $server_output;
curl_close ($ch);
AJAX GET을 사용하여
fb.php?commentmeta=your comment goes here
를 참조해 주세요.
또는 externel 서버에서 간단한 HTML 및 JavaScript를 사용하여 이 작업을 수행합니다.
Message: <input type="text" id="message">
<input type="submit" onclick='PostMessage()'>
<script>
function PostMessage() {
var comment = document.getElementById('message').value;
window.location.assign('http://yourdomain.tld/fb.php?commentmeta='+comment)
}
</script>
javascript 동일 원본 정책을 구글로 검색하다
간단히 말하면, 사용하려는 URL은 루트 및 프로토콜이 동일해야 합니다.따라서 http://yoursite.com은 https://yoursite.com 또는 http://anothersite.com에 접속할 수 없습니다.
이 보호(galimy가 지적한 바와 같이 브라우저 수준)를 완전히 우회해야 합니다.사용자가 좋아하는 웹 서버의 ProxyPass 모듈을 고려하십시오.
hi url은 응답할 함수를 호출해야 합니다.
$.ajax({
url:'function to call url',
...
...
});
API facebook 메서드 사용/호출 시도
아래의 간단한 단계를 따르면 결과를 얻을 수 있습니다.
스텝 1-백엔드에 내부 함수 getDetailFromExternal을 1개 만듭니다.스텝 2-그 함수는 아래 함수와 같이 cUrl을 사용하여 외부 URL을 호출합니다.
function getDetailFromExternal($p1,$p2) {
$url = "http://request url with parameters";
$ch = curl_init();
curl_setopt_array($ch, array(
CURLOPT_URL => $url,
CURLOPT_RETURNTRANSFER => true
));
curl_setopt($ch, CURLOPT_SSL_VERIFYHOST, 0);
curl_setopt($ch, CURLOPT_SSL_VERIFYPEER, 0);
$output = curl_exec($ch);
curl_close($ch);
echo $output;
exit;
}
스텝 3-javascript/jquery Ajax를 사용하여 프런트 엔드에서 내부 함수를 호출합니다.
언급URL : https://stackoverflow.com/questions/4613310/how-to-call-external-url-in-jquery
'programing' 카테고리의 다른 글
Woocommerce - php를 사용하여 주문 정보를 가져옵니다. (0) | 2023.02.21 |
---|---|
클라이언트 측 객체 배열에서 최신 날짜를 얻는 우아한 방법은 무엇입니까? (0) | 2023.02.21 |
특정 사용자가 소유한 모든 테이블에서 선택 허용 (0) | 2023.02.21 |
각을 사용하여 중첩된 양식 유효성 검사 건너뛰기JS (0) | 2023.02.21 |
AngularJS에서의 ng-binding이란 무엇입니까? (0) | 2023.02.21 |