如何将状态对象/数据传递给(异步)ajax回调?

时间:2013-12-17 18:59:55

标签: javascript jquery ajax

我在循环范围内进行ajax调用,我需要成功回调才能使用调用它的正确“i”。

像这样(伪JavaScript代码):

for (i = 1 ; i <= 10 ; ++i)
{
   $.ajax( { ....,
         success : function(data) {
             // I want to use the correct i HERE
         }
   });
}

显然它不起作用,因为在调用成功回调时,i值与回调不同步...

2 个答案:

答案 0 :(得分:6)

对此的规范解决方案是使用立即执行的函数表达式来创建闭包。

for (i = 1 ; i <= 10 ; ++i)
{
   (function (i) {
       $.ajax({
           success : function(data) {
               // I want to use the correct i HERE
           }
       });
    })(i);
}

答案 1 :(得分:4)

只需创建一个功能范围:

for (i = 1 ; i <= 10 ; ++i) {
    (function(i) {
        $.ajax({
             success : function(data) {
                console.log( i );
                 // I want to use the correct i HERE
             }
        });
    }(i));
}