我有一个同时发出ajax请求的代码。但是我想在 ajax 请求的成功函数中访问 i(循环变量(的值。这是我的代码:
arr=['one','two','three']
value="wow"
for(var i = 0;i<arr.length;i++){
$.ajax({
url: '/some_url',
method:'POST',
data:{
'something':arr[i],
'onething':value
},
async: true,
success: function(data) {
if(data.error==true){
//Here, i need the value of i for some reason
}
else{
}
},
error:function(error){
console.log(error);
}
});
}
我在问我是否完全错了。或者有什么方法可以做到这一点吗?
在您的解决方案中,JavaScript 流不会保留i
的值。 您需要创建closure
以使 JavaScript 保留i
的值。 试试这个,
arr=['one','two','three']
value="wow"
for(var i = 0;i<arr.length;i++){
(function(i){ // self invocation functino
$.ajax({
url: '/some_url',
method:'POST',
data:{
'something':arr[i],
'onething':value
},
async: true,
success: function(data) {
if(data.error==true){
//`i` should correctly here now
}
else{
}
},
error:function(error){
console.log(error);
}
});
})(i); // we are suppling the value of `i` here
}
请注意 for 循环的主体。