2

从名为 bundleOfData 的数组中加载一堆 json 文件。.url 是每个 json 文件的 url。

如何在processData函数中读取我的变量“myI”?

for(var i = 0; i < bunchOfData.length; i++){
        $.getJSON(bunchOfData[i].url, {"myI":i}, function(ds){}).success(processData);

        function processData(ds){
            console.log(ds.myI); //undefined
        }
    }
4

2 回答 2

1
function successHandler(i){
    console.log('i is instantiated/stored in the closure scope:',i);
    return function(data, textStatus, jqXHR){ 
        // here, the server response and a reference to 'i'
        console.log('i from the closure scope:',i, 'other values',data,textStatus,jqXHR);
    }            
}

var i = 0; i < bunchOfData.length; i++){
    $.getJSON(bunchOfData[i].url, {"myI":i}, function(ds){}).success(successHandler(i));

}
于 2013-03-07T20:58:31.207 回答
0

您不能访问范围之外的变量,响应将仅有效

function(ds){
    // Here
}

尝试这个:

for(var i = 0; i < bunchOfData.length; i++){
    $.getJSON(bunchOfData[i].url, {"myI":i}, function(ds){
        console.log(ds);
    });
}

同样,一旦请求完成并且内容success将运行成功,请注意,您尝试实现的目标可能不是单个请求(您可以统一文件并在一个请求中提供它们),因此您可以获得数据和然后迭代。

于 2013-03-07T20:52:22.913 回答