Jquery/Javascript - jquery ajax请求中的变量范围和行为

And*_*dré 2 jquery ajax-request

我有一种我无法理解的怪异行为.这是代码:

$.ajax({
    url: ...,
    dataType: ...,
       data: ...,
    success: function( data ) {
            ...

            for (var i=0; i<data.length; i++) {

                label_to_change = "some-" + i + "-item"

                        $.ajax({
                            url: ...,
                            dataType: ...,
                               data: ...,
                            success: function( data ) {

                                // Why I can't access the value in each loop, this will give me allways the last loop value
                                console.log(label_to_change)
                            }
                        }); 
            } 
    }
}); 
Run Code Online (Sandbox Code Playgroud)

我需要在第二个ajax请求中访问var label_to_change,但不是这样:

some-0-item
some-1-item
some-2-item
Run Code Online (Sandbox Code Playgroud)

我懂了:

some-2-item
some-2-item
some-2-item
Run Code Online (Sandbox Code Playgroud)

关于我做错的任何线索?

最好的祝福,

mus*_*fan 5

问题是因为label_to_change变量是单个实例,并且for循环在任何ajax调用完成之前将其更改3次.你可以使用一个匿名函数(或者这里正确的术语),并做这样的事情:

label_to_change = "some-" + i + "-item";

(function(newLabel){
    $.ajax({
       url: ...,
       dataType: ...,
       data: ...,
       success: function( data ) {
          console.log(newLabel)
       }
    }); 
})(label_to_change);
Run Code Online (Sandbox Code Playgroud)