为什么随机数量的这些JSONP请求失败?

时间:2012-07-13 20:34:10

标签: javascript ajax jquery jsonp

我有一个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) {
    }
});
});​

有什么想法吗?

1 个答案:

答案 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