我正在尝试将jsonp与jQuery一起使用但是我的行为不一致.有时脚本有效,有时却没有;我真的不明白为什么.
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 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'); });