使用statusCode处理jQuery AJAX失败

Handling jQuery AJAX failures with statusCode

本文关键字:AJAX 失败 jQuery 处理 statusCode 使用      更新时间:2023-09-26

我正在尝试全局检测和响应某个statusCode,使用jQuery的statusCode函数。然而,当一个特定的调用失败时,它似乎同时击中了原始错误和statusCode。为什么会发生这种情况?它能先击中statusCode吗?

这是我的ajaxSetup:

$.ajaxSetup({
    statusCode: {
            412 : function(data) {
               alert('do something!');
            }
     }
});

下面是一个示例:

$.ajax({
     type: "GET", 
     url: 'a_url.json', 
     dataType: 'json',
     data : {
          'id': dnaRefTOID
     },
     success: function(data) {
          alert('success');
     },
     error : function(xhr, status, error) {
           alert(xhr.statusText);
     }
 });

我看到的是调用在击中statusCode之前击中'error'。我想让它总是击中statusCode和statusCode。这个例子显然分布在许多ajax调用中,所以我不想在每个错误中使用if语句,否则它就失去了使用statusCode的意义。

有人有什么想法吗?

据我所知,如果不改变jQuery本身,就无法实现这一点。你可以这样做:

$(document).ajaxError(function(event, jqxhr, settings, exception) {
   if (jqxhr.status == 412) {
      //handle status code 412 here
   }
});