我有一个jQuery each
循环,它运行一个包含三个JSONP
网址的列表,但是,随机数的这些循环失败并显示错误:Uncaught TypeError: Property 'callback' of object [object Window] is not a function
。
它通常是一两个,有时没有,但它永远不会全部,我认为它与异步部分有关,但我不知道如何解决它。
这是我的代码:
var feeds = ["JSONPUrl", "JSONPUrl", "JSONPUrl"];
$.each(feeds, function(index, feedUrl) {
$.ajax({
type: "GET",
url: feedUrl,
processData : true,
data: {
tagmode: "any",
jsonp: "callback",
callback: "callback"
},
jsonpCallback: "callback",
dataType: "jsonp",
success: function(data) {
// Do some DOM manipulations with the data
},
error: function(x,y,z) {
}
});
});
有什么想法吗?
答案 0 :(得分:2)
由于硬编码的?callback=callback
属性,您的网址看起来像callback
。删除它,jQuery将自动为JSONP回调定义具有随机名称的临时函数。
data: {
tagmode: "any",
jsonp: "callback", // <-- Do not forget to remove the trailing comma
callback: "callback" // <-- Remove this!
},
jsonpCallback: "callback", // <-- Remove this!
如果您确实希望在成功时执行名为callback
的函数,请将其包含在success
处理程序中。
关于注释:如果您的服务器期望JSONP回调参数被称为“jsonp”而不是“callback”,请使用:
$.ajax({
...
jsonp: "jsonp"
...
});
// results in http://..../?jsonp=jQuery234254342random2342etc