JQuery捕获任何ajax错误
我想抓住任何ajax 401 Unauthorised
exception,但不喜欢改变我所有的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调用被触发之前的某个地方。