一尘不染

检查jQuery中AJAX请求是否成功的最佳方法

ajax

我一直在通过执行以下操作来确保我的AJAX请求成功:

$.post("page.php", {data: stuff}, function(data, status) {
    if(status == "success") {
        //Code here
    }
    else {
        //Error handling stuff
    }
});

检查状态变量是执行此操作的最佳方法,还是有一种更好的方法来确保请求实际通过?我正在考虑“成功”请求是一个成功命中我要发布到的页面的请求,而不会超时(例如,服务器已关闭,并且在出现故障之前立即进行了AJAX请求)或返回任何404或500错误。


阅读 493

收藏
2020-07-26

共1个答案

一尘不染

通过这样调用$.post,您将仅自动传递一个success handler函数。

如果请求中出现问题,则甚至不会执行此方法。

要拥有更多控制权,请$.ajax()直接使用或传递失败处理程序。看起来像

$.post("page.php", {data: stuff}, function(data, status) {
   // we're fine here
}).fail(function(err, status) {
   // something went wrong, check err and status
});

使用相同的东西.ajax()

$.ajax({
   type: 'POST',
   url: 'page.php',
   data: stuff,
   success: function( data ) {
   },
   error: function(xhr, status, error) {
      // check status && error
   },
   dataType: 'text'
});

您甚至可以将更多的ajax事件处理程序传递给$.ajax,如beforeSend修改/读取XHR标头,或complete使处理程序在请求完成时触发两种方式(错误或不错误)。

2020-07-26