【问题标题】:Populate array of JSON Objects with JSONP Ajax response使用 JSONP Ajax 响应填充 JSON 对象数组
【发布时间】:2013-03-13 01:00:57
【问题描述】:

我是 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 是当我想使用它时该数组尚未填充,但我可能错了。如果是这样,我该如何解决它,否则,我错过了什么?提前致谢!

【问题讨论】:

    标签: javascript jquery ajax jsonp


    【解决方案1】:

    在当前函数上下文完成执行之前,不会编辑 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');
        });
    });
    

    【讨论】:

    • 嗯......这让我更接近,所以谢谢你。我认为我仍然有两个问题:1. 任意 ajax 调用的数量(基于 id 的数量)所以不知何故我想在 .when( ... ) 方法中有一个循环,以及 2. 成功回调函数我需要更新一个全局数组......这样.then()(或者理想情况下完全在块之外)我可以对数组做一些事情。
    猜你喜欢
    • 1970-01-01
    • 2016-12-04
    • 2012-05-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多