我試圖發送一個JSONP Ajax請求(從client.htm到proxy.htm)JSONP Ajax回調,這是由它創建了另一個不同的阿賈克斯JSONP請求到服務(代理代理網頁接收。 htm ---> service.php)。目前,代理頁面接收來自服務的JSON格式對象,但我堅持要將對象返回到第一個初始Ajax請求。以下是我試圖運行的示例代碼。這是可能的Javascript?如果是這樣,我怎麼可能將它返回到clientCallback功能。從JavaScript調用
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'ed,因爲它包含一個內部回調處理程序。 –