JQuery:多个AJAX调用的单个回调

时间:2017-05-31 10:32:26

标签: javascript jquery ajax

我已经在这里阅读了很多帖子,并且没有找到满足我问题的答案。

基本上我正在构建 n AJAX电话,并希望只有在所有返回后才能做某事。

但无论我尝试什么,done()回调都会过早发生。这是我的代码:

    // turn the URL array into an AJAX request array
    for (var i=0; i<mediaRequests.length; i++) {
        mediaRequests[i] = $.ajax(mediaRequests[i], {dataType: 'jsonp'});
    }

    $.when($, mediaRequests).done(function() {
        var responses = arguments[1];

        // for each response...
        for (var i=0; i<responses.length; i++) {
            var data = responses[i].responseJSON;
            console.log(data);
        }
    });

但控制台打印出undefined

为什么没有$.when($, mediaRequests).done()给我回复?

1 个答案:

答案 0 :(得分:0)

你好,你可以像这样使用defferreds数组:

$.when.apply($, mediaRequests).done(function(){

而不是:

$.when($, mediaRequests).done(function() {

当你知道你打电话给多少个ajax时你可以做到这一点(假设有3个):

$.when.apply($, mediaRequests).done(function(result1,result2,result3){
// now result1 got result from first ajax, result2 from second ajax and so on