将动态变量附加到ajax回调函数

时间:2011-08-05 09:55:04

标签: jquery callback

我有一个发送ajax请求的循环。我想在我的ajax回调函数中包含循环索引:

for (i=0;i<10;i++) {
    $.ajax({
        data: "index="+i
        success: function (data) {
            //I want to be able to see the variable (i) here
            //since the request is async, it returns the last index on all
            $("#div"+i).append(data);
        }
    })
}

3 个答案:

答案 0 :(得分:2)

你需要将它包装在一个闭包中。这应该这样做:

for (i=0;i<10;i++) {
    (function(i) {
        $.ajax({
            data: "index="+i
            success: function (data) {
                //I want to be able to see the variable (i) here
                //since the request is async, it returns the last index on all
                $("#div"+i).append(data);
            }
        })
    })(i);
}

答案 1 :(得分:1)

您必须围绕ajax请求创建一个闭包,以保留i的值作为请求回调函数的本地值:

for (i=0;i<10;i++) {
    (function(i) {
        $.ajax({ /* ... */ });
    })(i);
}

答案 2 :(得分:0)

您可以使用data返回索引参数以及其余数据

1: REST OF DATA HERE

从数据字符串中删除索引。