서비스 (프록시)에 다른 Ajax JSONP 요청을 작성하는 프록시 페이지에서 수신하는 JSONP Ajax 요청 (client.htm에서 proxy.htm으로)을 보내려고합니다. htm ---> service.php). 현재 프록시 페이지는 서비스에서 JSON 형식 객체를 받지만 첫 번째 초기 Ajax 요청으로 객체를 반환해야합니다. 다음은 실행하려고하는 샘플 코드입니다. Javascript로 가능합니까? 그렇다면 어떻게 객체를 clientCallback 함수로 반환 할 수 있습니까?Javascript에서 JSONP Ajax 콜백 호출
Client.htm
// CLIENT ---> PROXY
$(document).ready(function() {
$.ajax({
type: 'GET',
url: 'http://localhost/jsonp_proxy/listener.htm',
dataType: 'jsonp',
jsonpCallback: "clientCallback",
success: function (theData) {
alert("Success");
},
error: function (xhr, ajaxOptions, thrownError) {
alert("Error");
}
});
});
window.clientCallback = function(results) {
alert(results.uid);
}
Proxy.htm
// PROXY ---> SERVER
$(document).ready(function() {
$.ajax({
type: 'GET',
url: 'http://localhost/jsonp_server/service.php',
dataType: 'jsonp',
jsonpCallback: "proxyCallback",
success: function (theData) {
// alert("Success");
},
error: function (xhr, ajaxOptions, thrownError) {
// alert("Error");
}
});
});
window.proxyCallback = function(resultData) {
// HOW TO CALL CLIENT CALLBACK FUNCTION
}
Service.php 몇 반 올바른 사용
<?php
echo "proxyCallback("."{'uid': 123, 'username': 'jdirt', 'name': 'Joe Dirt'}".");";
?>
답장을 보내 주셔서 감사합니다.하지만이 질문은 client.htm 페이지로 되돌아 가지 않습니다. Ajax는 오류 기능을 사용한다. – Manny
절대로 eval()을 사용하지 마십시오. JSON.parse()를 사용하십시오. – saml
@saml - 일반적으로 동의 하겠지만'JSONP'는'JSON'과 약간 다른 짐승입니다. 'JSONP'는 내부 콜백 핸들러를 포함하고 있기 때문에'eval'되어야하는 * 실행 코드 *입니다. –