jquery deferred.done:将数据数组传递给done方法

时间:2015-05-23 11:31:11

标签: 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'可以是任何数字。你能帮我吗?我想要映射'我'值对应的数据值。

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
    });   
}

1 个答案:

答案 0 :(得分:1)

您可以使用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