javascript - jquery deferred.done : passing a data array to done method

标签 javascript jquery ajax

我正在使用https://api.jquery.com/jquery.when/中描述的方法进行一系列 ajax 调用。 (基于该页面中的示例 $.when( $.ajax( "/page1.php"), $.ajax( "/page2.php") ))。

下面的代码有效。但是,我无法弄清楚如何将数据数组传递给 .done() 方法。在下面的示例中,我有 data1、data2、data3。但在实际情况下,它可能是 data1、data2、...、dataN,其中“N”可以是任何数字。你能帮我吗?我想将“i”值映射到相应的数据值。

function test() {
    var myArr = [];
    var i;
    for (i = 1; i <= 3; i++) {
        myArr.push(
            jQuery.ajax({
            type: "GET",
            url: "http:/c.html/" + i,
            });
        );
    }

    $.when.apply($, myArr).done(function(data1, data2, data3) {
     //do something on data1, data2, data3
    }).fail (function (jqXHR, textStatus) {
        //oops..failed
    });   
}

最佳答案

您可以使用arguments objects这是一个类似数组的对象,包含传递给函数的所有参数

function test() {
    var myArr = [];
    var i;
    for (i = 1; i <= 3; i++) {
        myArr.push(jQuery.ajax({
            type: "GET",
            url: "http:/c.html/" + i,
        }));
    }

    $.when.apply($, myArr).done(function () {
        $.each(arguments, function (idx, args) {
            console.log(args[0])
        })
    }).fail(function (jqXHR, textStatus) {
        //oops..failed
    });
}

演示:Fiddle

关于javascript - jquery deferred.done : passing a data array to done method,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30412140/

相关文章:

javascript - 使用 Ajax 切换按钮而不刷新

javascript - 从 ajax 响应访问返回数组的键值

javascript - 在不触发 Sammy 事件的情况下更改哈希

javascript - 尝试在启动时延迟动画

jquery - 在ajax响应中打印json对象

jQuery - 将文本从输入字段发送到带有预定文本的 div

javascript - HTML 表单中的数据通过 JavaScript 导出到 XML

javascript - Angularjs 使用电子邮件类型重置表单字段

javascript - 在以对象文字表示法设置其他属性时如何获取属性?

javascript - 我怎样才能让这个js在按钮标签而不是 anchor 上工作?