JQuery捕获任何ajax错误

我想抓住任何ajax 401 Unauthorisedexception,但不喜欢改变我所有的ajax查询。 有没有办法为任何$ .ajax调用更改它(覆盖任何error处理程序)?

你可以使用全局ajax事件处理程序.ajaxError()

 $( document ).ajaxError(function( event, jqxhr, settings, exception ) {  if ( jqxhr.status== 401 ) {    $( "div.log" ).text( "Triggered ajaxError handler." );  } }); 

你可以这样做:

 $(function() { $.ajaxSetup({ error: function(jqXHR, exception) { if (jqXHR.status === 401) { alert('HTTP Error 401 Unauthorized.'); } else { alert('Uncaught Error.\n' + jqXHR.responseText); } } }); }); 

这将在您的任何ajax调用中捕获错误。

$.ajaxSetup()函数将允许您为Ajax调用指定全局选项。 但要小心,因为对ajaxSetup()其他调用将覆盖全局选项,并且ajax()方法的指定本地选项将覆盖全局设置。

文档

尝试使用.ajaxError()作为全局方法http://api.jquery.com/ajaxError/

要捕获401状态代码,只需添加

  $.ajaxSetup({ statusCode: { 401: function(err){ console.log('Login Failed.', err.responseJSON); // or whatever... } } }); 

在AJAX调用被触发之前的某个地方。