jQuery的。从循环中的ajax获取var

时间:2012-02-24 13:31:38

标签: javascript jquery asynchronous

for (var i = 0; i < 3; i++){
    $.ajax({
        url: "ajax.php",
        success: function(data){
            alert(i);
        }
    });
}

我需要一个解决方案来获取“0”,“1”和“2”的警报。 Аt这个时候我当然看到3个警告“3”。

3 个答案:

答案 0 :(得分:4)

您需要在$.ajax()来电时设置一个闭包。

for (var i = 0; i < 3; i++){
    (function (loop_var) {
        $.ajax({
            url: "ajax.php",
            success: function(data){
                alert(loop_var);
            }
        });
    })(i);
}

目前正在输出3,因为我在Ajax返回时i的值确实为3

答案 1 :(得分:2)

在代码周围使用匿名函数包装器来创建一个闭包,它将保持值,直到异步响应到达:

for (var i = 0; i < 3; i++){

  (function(i){

    $.ajax({
      url: "ajax.php",
      success: function(data){
        alert(i);
      }
    });

  })(i);

}

答案 2 :(得分:0)

将i值作为参数传递给ajax.php页面。 ajax.php页面必须将i返回到调用页面。所以让ajax.php页面返回i。 您可以使用json对象或一个简单的管道分隔字符串来存储来自ajax.php的返回值。

for (var i = 0; i < 3; i++){
    $.ajax({
        data: {par: i},
        url: "ajax.php",
        success: function(data){
            //data is a pipe-separated string
            var cnt = data.split("|")[0];
            alert(cnt);
        }
    });
}