我有一个同时发出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);
}
});
}
我是初学者,所以我问我是不是完全错了。或者我有什么方法可以实现这个目标吗?
答案 0 :(得分:0)
在您的解决方案中,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循环体。