2013-08-20 22 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被定义,执行您的代码