2016-09-12 4 views
0

私は2つのjquery ajax呼び出しを持っています。
すべての呼び出しが完了した後、両方の返されたデータを取得します。
例として、両方とも "num"を返します。すべてのAjax呼び出しからすべての返されたデータを取得するにはどうすればいいですか?

$(document).ready(function() { 
    var allPromises = [ 
     $.ajax({url: '/ajax.php', method: 'post', data: {num: 1}}), 
     $.ajax({url: '/ajax.php', method: 'post', data: {num: 2}}) 
    ]; 

    $.when.apply($, allPromises).done(function(returnData) { 
     console.log(returnData); 
    }); 
}); 

は、例えば、私が返された値の合計を取得したい:
はここに私のコードです。
問題は、最初のリクエストからのみデータが取得されていることです。
グローバル変数に保存せずにどうすればいいですか?

+0

が動作しているようです、ありませんそれ? – Bergi

+0

あなたは 'console.log(returnData)'を持っている '.done()'ハンドラの中でデータを使用します。これは、データを使用するタイミングが正しいことがわかっているコード内の唯一の場所です。データを合計したい場合は、そこで合計します。 – jfriend00

+0

@Bergi問題は、1つのリクエストからのみデータを取得していることです。 – lvil

答えて

1

あなたはそれぞれの約束の戻り値を取得する:

$.when.apply($, allPromises).done(function(returnData1, returnData2) { 
    console.log(returnData1); 
    console.log(returnData2); 
}); 

は、Ajaxの未知数のためにhttps://api.jquery.com/jquery.when/

はあなたが使用することができます呼び出しを参照してください。

$.when.apply($, allPromises).then(function() { 
    var objects = arguments; // The array of resolved objects as a pseudo-array 
    ... 
}; 
+0

偉大な答えです! しかし、私がallPromises.lengthを知らないとどうなりますか? – lvil

+1

その後、 'arguments'はどうなりますか? – raina77ow

+0

私は答えを更新しました。 –

関連する問題