0

可能重复:
Javascript臭名昭著的循环问题?

我在尝试访问$.post函数内的变量时遇到了麻烦。

函数内部变量的值a始终相同:7。但在它之外,它会随我的意愿增加。

为什么会这样?如何为$.post函数执行循环?

for(var a=0; a<7; a++){
    console.log(a); /* increasing value */

    $.post("http://"+ document.domain + "/posts/user/xxxxx",
        function(departments){
        console.log(a);  /*value of 7*/

    });
}

谢谢。

4

1 回答 1

3

要么给每个迭代它自己的范围,要么使用$.ajaxcontext选项。

for(var a=0; a<7; a++){
    (function(a){
        console.log(a); /* increasing value */

        $.post("http://"+ document.domain + "/posts/user/xxxxx",
            function(departments){
            console.log(a);  /*value of 7*/

        });
    })(a);
}

$.ajax...

for(var a=0; a<7; a++){
    console.log(a); /* increasing value */

    $.ajax({
        url: "http://"+ document.domain + "/posts/user/xxxxx",
        type: "POST",
        context: a,
        success: function(departments){
            console.log(this);  /*value of 7*/    
        }
    });
}
于 2012-12-04T15:09:58.897 回答