2013-08-20 21 views
0

我需要同時進行3個AJAX調用,如果他們都成功,那麼我需要執行一個函數。如果任何呼叫失敗,我需要知道它是哪一個,以及它拋出的錯誤。執行功能取決於多個Ajax調用狀態

我認爲jQuery的承諾是我需要的。我已經看到許多例子做when & then承諾,但沒有看到任何加強這一特定問題。

我會欣賞id有人可以指引我正確的方向。

回答

1

有點冗長提出一個觀點,但你堅持從陣列中的Ajax調用返回的延遲,然後用$.when該陣列上做一些事情時,他們都做:

var request1 = $.ajax({ 
    url: 'someurl1.php' 
}).fail(function() { 
    alert('request 1 failed'); 
}); 

var request2 = $.ajax({ 
    url: 'someurl2.php' 
}).fail(function() { 
    alert('request 2 failed'); 
}); 

var request3 = $.ajax({ 
    url: 'someurl3.php' 
}).fail(function() { 
    alert('request 3 failed'); 
}); 

$.when.apply($, [request1, request2, request3]).then(function() { 
    // all done 
}); 

記如果任何調用失敗,.then()不會被調用

+0

好,是否有任何更優雅的方式來使這3個Ajax調用。它看起來像很多重複的代碼? – RuntimeException

+0

@RuntimeException - 當然,有可能有數百種方法來做到這一點,這裏是一個[**示例**](http://jsfiddle.net/ZEUDR/) – adeneo

+0

我喜歡這個例子,謝謝Adeneo! – RuntimeException

0

快速和骯髒的:

  • 申報3個狀態變量
  • 使3 AJAX調用
  • 設置狀態變量的AJAX調用回調函數
  • 各有回調函數調用你的最終功能作爲它的最後一個指令
  • 首先檢查狀態的狀態寫你的最終功能變量(未定義?),當所有3被定義,執行您的代碼