如何在ajax成功函数中访问循环变量?

时间:2018-06-16 19:26:00

标签: javascript ajax callback

我有一个同时发出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);
      }
    });
  }

我是初学者,所以我问我是不是完全错了。或者我有什么方法可以实现这个目标吗?

1 个答案:

答案 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循环体。