javascript - jQuery Ajax 循环调用中丢失本地变量引用
我在一个循环中进行多个 jQuery ajax 调用。每次其中一个 ajax 调用返回时,我都需要引用与原始 ajax 调用对应的值。我的当前代码不能正常工作,因为 lskey 变量的值已经被后续的循环迭代更改了。
这是代码:
for (var i = 0, len = localStorage.length; i < len; i++) {
var lskey = localStorage.key(i);
if (lskey.substr(0, 4) === 'form') {
var postdata = localStorage.getItem(lskey); // Get the form data
$.ajax({
type: "POST",
async: "false",
url: "/Profile/PostForm",
data: postdata,
success: function (data) {
$('#rollinginfo').append('<br>' + data + ',key=' + lskey);
localStorage.removeItem(lskey); // Remove the relevant localStorage entry
}
, error: function (data) { $('#rollinginfo').append('<br />ERR:' + data); }
});
}
}
问题是每次循环执行时,lskey 都会被更改,因此成功回调没有对调用时存在的 lskey 值的引用。
我如何为每个成功回调引用 lskey 的正确值?
答案#1
for (var i = 0, len = localStorage.length; i < len; i++) {
var lskey = localStorage.key(i);
if (lskey.substr(0, 4) === 'form') {
var postdata = localStorage.getItem(lskey); // Get the form data
$.ajax({
type: "POST",
async: "false",
url: "/Profile/PostForm",
data: postdata,
local_lskey: lskey
success: function (data) {
$('#rollinginfo').append('<br>' + data + ',key=' + lskey);
localStorage.removeItem(this.local_lskey); // Remove the relevant localStorage entry
}
, error: function (data) { $('#rollinginfo').append('<br />ERR:' + data); }
});
}
}
这应该可行。
答案#2
最后,我将关键信息添加到服务器发布中,然后以 JSON 格式从服务器返回它,这样成功函数就可以简单地引用服务器响应中包含的键。
