我正在尝试将jsonp与jQuery一起使用但是我的行为不一致.有时脚本有效,有时却没有;我真的不明白为什么.
这是Chrome可能显示的错误:
Uncaught TypeError: Property 'jQuery18208278296771459281_1362854738133' of object [object Object] is not a function
在以下示例中,我只是尝试检查应用程序是否在线.但是这种不一致的行为可能发生在其他类似的ajax调用上:
$.ajaxSetup({
error: function (req,status,ex) {},success: function (data,req) {},timeout: 2000,crossDomain: true,contentType: "application/json",dataType:"jsonp",url: "http://myUrl.com/ping.PHP?preventCache="+new Date()
});
return $.ajax();
服务器端PHP文件也很简单:
<?PHP
header("Content-Type: application/javascript; charset=UTF-8");
echo $_GET['callback'];
?> ({ "status": "online" })
解决方法
你的问题不是那么清楚,当我试图两次使用相同的回调函数名时,我得到了同样的错误.在任何情况下,这是如何在jquery中调用jsonp:
var mycallback = 'c'+Math.floor((Math.random()*100000000)+1);
$.ajax({
type: 'GET',url: URL,async: true,jsonpCallback: mycallback,dataType: 'jsonp'
}).done(function(json){
console.log(json);
callback(json);
}).fail(function(f){
console.log("f");
console.log(f.status);
}).always(function(){
// console.log('complete');
});