0

我是 JS/JQuery 的菜鸟。这是代码:

ids = ["1", "2", "3"]
var imageData = [];
for (i=0; i<ids.length; i++) {
    $.ajax({
        url: 'http://my.images.edu/' + ids[i] + '/info.json',
        type: 'GET',
        dataType: 'jsonp',
        success: function(data) {
            imageData.push(data);
        }
    });
};
// now I want to do stuff with in a loop with the populated 
// array, but it's always empty!
console.log(imageData.length);

JSONP 正在工作(我可以在函数中将 JSON 对象响应记录到控制台success)。我基于这个问题的猜测是,当我想使用它时,数组还没有填充,但我可能错了。如果是这样,我该如何解决它,否则,我错过了什么?提前致谢!

4

1 回答 1

0

在当前函数上下文完成执行之前,不会编辑 imageData。

代码将运行完成,然后成功回调将一一运行。您必须有自己的逻辑来处理放置在回调中的数据。

由于这看起来您实际上希望在执行操作之前完成所有回调,因此您可能需要查看 jQuery defereds

沿着这些路线在循环中工作的东西。

$('#button').click(function() {
    $.when(
        $.ajax({
            url: '/echo/html/',
            success: function(data) {
                alert('request complete')
            }
        }),
        $.ajax({
            url: '/echo/html/',
            success: function(data) {
                alert('request complete')
            }
        })
    ).then( function(){
        alert('all complete');
    });
});
于 2013-03-13T01:05:50.993 回答