根据多个ajax调用状态执行功能

时间:2013-08-20 13:37:41

标签: javascript jquery

如果所有这些调用都成功,我需要同时进行3次AJAX调用,然后我需要执行一个函数。如果任何调用失败,我需要知道它是哪一个以及它抛出了什么错误。

我认为jquery承诺是我需要的。我查看了许多做when&的例子。 then承诺,但没有看到任何解决这一特定问题。

我会感激身份,有人可以指导我正确的方向。

2 个答案:

答案 0 :(得分: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()

答案 1 :(得分:0)

又快又脏:

  • 声明3个状态变量
  • 进行3次AJAX通话
  • 在AJAX调用回调函数
  • 中设置状态变量
  • 让每个回调函数将最后一个函数称为最后一条指令
  • 通过首先检查状态变量的状态(未定义?)编写最终函数,并在定义所有3个函数时执行代码