使用JSONP Ajax响应填充JSON对象数组

时间:2013-03-13 01:00:57

标签: javascript jquery ajax jsonp

我是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正在运行(我可以在success函数中将JSON对象响应记录到控制台)。我的猜测是based on this question,当我想使用它时,数组还没有填充,但我可能错了。如果是这样的话,我该如何绕过它,否则,我错过了什么?提前谢谢!

1 个答案:

答案 0 :(得分:0)

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

代码将运行完成,然后成功回调将逐个运行。你必须有你的逻辑来处理回调中的数据。

因为在执行操作之前,您实际上希望完成所有回调,所以您可能希望查看jQuery deffereds

在循环中工作的these lines

$('#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');
    });
});