Backbone 应用中的多个 jQuery Ajax 调用混淆了数据

Multiple jQuery Ajax calls in a Backbone App mixes data up

我开发了一个 Backbone 应用程序,其中包含数据源集合。每当添加新的数据源时,它的模型都会添加到集合中,并且会像这样对其进行 jQuery Ajax 调用:

fetch: function() {
        var model = this,
            url = model.get("url");

        function testCallback(parObj) {
            return function(data, textStatus, jqXHR) {
                alert("test - "+parObj.url+" : "+data.sourceurl);
            }
        }

        $.ajax({
            url:        url,
            type:       "GET",
            dataType:   "jsonp",
            jsonpCallback:  "data",
            success:    testCallback({ model: model, url: url })
        })
        .done(function (data) {
            alert("done - "+model.get("url")+" : "+data.sourceurl);
        });
}

快速连续调用fetch(),调试它我可以看到当我发起Ajax请求时一切正常。

如果我只添加两个数据源,一切都很好。

但是当我在三个不同的域上同时有三个请求 运行 时,done() 和 testCallBack() 函数都会混淆数据(在 Chrome 和 Safari 中也会发生同样的情况)。

例如:

我是不是做错了什么?非常感谢任何帮助。

那是因为您为每个请求设置了相同的 jsonpCallback 参数。完全删除该行,因为 jQuery 会自动为您创建唯一的行。