0

3つのURLのリストを実行するjQueryeachループがありますJSONPが、それらのランダムな数がエラーで失敗します:Uncaught TypeError: Property 'callback' of object [object Window] is not a function

通常は1つか2つで、場合によってはまったくありませんが、すべてではありません。非同期部分に関係していると思いますが、修正方法がわかりません。

これが私のコードです:

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) {
    }
});
});​

何か案は?

4

1 に答える 1

2

?callback=callbackハードコードされたプロパティのため、URLはのようになり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コールバックパラメーターが「callback」ではなく「jsonp」と呼ばれることを期待している場合は、次を使用します。

$.ajax({
    ...
    jsonp: "jsonp"
    ...
});
// results in http://..../?jsonp=jQuery234254342random2342etc
于 2012-07-13T21:02:53.033 に答える