从Javascript调用JSONP Ajax回调



我正在尝试发送一个JSONP Ajax请求(从client.htm到proxy.htm),该请求由一个代理页面接收,该页面创建了另一个不同的Ajax JSONP请求到服务(proxy.htm--->service.php)。目前,代理页面从服务接收到JSON格式的对象,但我无法将该对象返回到第一个初始Ajax请求。下面是我试图运行的示例代码。这在Javascript中可能吗?如果是,我如何将对象返回到clientCallback函数。

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'}".");";
?>

eval:的少数半有效用途之一

success: function (theData) {
eval("(" + theData + ")");
//alert("Success");

提醒一下,JSONP是一种黑客攻击和安全风险。你给了第三方很多信任和控制。

只需从window.proxyCallback.调用window.clientCallback

最新更新