当另一个AJAX调用失败时,是否可以执行另一个AJAX调用?

时间:2014-12-23 10:12:06

标签: php jquery ajax

当正在运行的ajax调用失败时,是否可以执行另一个ajax调用?

像...一样的东西。

$.ajax({
    url: 'myurl.php',
    type: 'post',
    data: postdata
}).done(function {
    // do some stuff
}).fail(function {
    var faildata = jqXHR.statusText;
    $.ajax({
        url: 'mybackupurl.php',
        type: 'post',
        data: faildata
    }).done({...});
});

这里的想法是创建一个服务器端日志文件(或做一个数据库条目),可以检查失败的AJAX调用。这样可以在以后检索数据以进行调试。

2 个答案:

答案 0 :(得分:1)

快速回答:是的,可能。但...

检查返回的承诺的方式有点不对 - 它应该是function() {...}而不是function { ... }。另外,最好注意.done().fail()方法返回的变量类型:

  • .done()返回datatextStatusjqXHR对象
  • .fail()返回jqXHR个对象textStatus,最后返回errorThrown

在函数调用中命名这些变量的顺序很重要,否则您将访问不属于它们的内容;)


$.ajax({

    url: 'myurl.php',
    type: 'post',
    data: postdata

}).done(function(data, textStatus, jqXHR) {

    // do some stuff

}).fail(function(jqXHR, textStatus, errorThrown) {

    $.ajax({
        url: 'mybackupurl.php',
        type: 'post',
        data: textStatus
    }).done(function() {
        // Do more
    });

});

答案 1 :(得分:0)

答案是是的!,如Marco Mura所述