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 中也会发生同样的情况)。
例如:
- URL 1 从 URL 1.
获取数据
- URL 2 从 URL 3.
获取数据
- URL 3 从 URL 2.
获取数据
我是不是做错了什么?非常感谢任何帮助。
那是因为您为每个请求设置了相同的 jsonpCallback
参数。完全删除该行,因为 jQuery 会自动为您创建唯一的行。
我开发了一个 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 中也会发生同样的情况)。
例如:
- URL 1 从 URL 1. 获取数据
- URL 2 从 URL 3. 获取数据
- URL 3 从 URL 2. 获取数据
我是不是做错了什么?非常感谢任何帮助。
那是因为您为每个请求设置了相同的 jsonpCallback
参数。完全删除该行,因为 jQuery 会自动为您创建唯一的行。