Datatables 1.10.5 ajax错误处理程序-访问http状态代码

Datatables 1.10.5 ajax错误处理程序-访问http状态代码,ajax,error-handling,datatables,http-status-codes,Ajax,Error Handling,Datatables,Http Status Codes,我使用的是Datatables 1.10.5,并且定义了ajax错误处理程序。当错误触发时,我需要获得对实际http状态代码的访问权限,以便查看我的用户的会话时间是否已过期(http 401),以及后端是否有错误,例如http 500错误。现在的技术说明总是7 如何从ajax事务中获取难以捉摸的HTTP状态代码?我在下面试过了,但没有点火 $("#example").ajaxError(function(event, jqxhr, request, settings){ alert("F

我使用的是Datatables 1.10.5,并且定义了ajax错误处理程序。当错误触发时,我需要获得对实际http状态代码的访问权限,以便查看我的用户的会话时间是否已过期(http 401),以及后端是否有错误,例如http 500错误。现在的技术说明总是7

如何从ajax事务中获取难以捉摸的HTTP状态代码?我在下面试过了,但没有点火

$("#example").ajaxError(function(event, jqxhr, request, settings){
    alert("Failure HTTP Code:"+jqxhr.status);    
});

没有我需要的信息,或者至少在任何传递的变量中找不到它。

处理事件。发生Ajax错误时,第三个参数
json
将为
null
,第四个参数
xhr
将包含对象。您可以通过访问
xhr.status
属性来获取状态


还可以查看可用于指示DataTables不显示警报的选项。

通过使用以下函数覆盖更特定于DataTables的选项,我可以访问状态代码,而无需覆盖全局jQuery
ajaxError

    $.fn.dataTable.ext.errMode = function (settings, tn, msg) {
      if (settings && settings.jqXHR && settings.jqXHR.status == 401) {
          window.location = window.location.origin + '/login';
          return
      }
      alert(msg) // Alert for all other error types; default DataTables behavior
    };
这个例子显示了一个重定向到401状态代码登录,但是,您可以对任何其他状态代码执行相同的操作


最后一个注意事项是,您可能希望利用DataTables
statusCode
选项进行特定于状态代码的处理,但如果您想绕过默认错误处理,则仍然需要覆盖
$.fn.dataTable.ext.errMode
,因为它在
statusCode

中定义的任何内容之前执行(“#示例”).ajaxError(函数(事件、jqxhr、请求、设置){if(jqxhr.status==500)警报(“发生服务器端错误”);};在1.10.5中不起作用。我似乎只能让新的处理程序工作。好的。我使用了xhr事件,它工作得非常好。非常感谢你!
    $.fn.dataTable.ext.errMode = function (settings, tn, msg) {
      if (settings && settings.jqXHR && settings.jqXHR.status == 401) {
          window.location = window.location.origin + '/login';
          return
      }
      alert(msg) // Alert for all other error types; default DataTables behavior
    };