分析如
this one这样的问题,我正在寻找包装jQuery的$ .ajax()方法,以便我可以在一个位置提供错误处理,然后由所有应用程序的远程调用自动使用。
简单的方法是简单地创建一个新的名称,类似于$ .get()和$ .post()实现外观到$ .ajax()。但是,我希望重用名称$ .ajax(),以便我们可以使用标准的jQuery语法来保留我们的其余代码,从而隐藏我们添加了自己的错误处理的事实。这是实际的还是/或很好的实现,或者可能是一个可怕的想法?
编辑:迄今为止的响应表明.ajaxError()是要走的路。我知道这会捕获400和500级错误,但是有没有办法(用这个事件处理程序或其他方式)捕获302重定向?我正在尝试处理重定向到登录页面的响应,但是我们希望在XHR请求时拦截该重定向,从而允许用户取消操作,而不是强制自动转发。
解决方法
你可能想看看
$.ajaxError
。
$(document).ajaxError(function myErrorHandler(event,xhr,ajaxOptions,thrownError) { alert("There was an ajax error!"); });
jQuery提供a whole bunch of other ways to attach global handlers。
要回答你的编辑,你可以用$ .ajaxSuccess捕获成功的ajax请求,你可以用$ .ajaxComplete来捕获所有的(成功和失败的)。您可以从xhr参数获取响应代码,如
$(document).ajaxComplete(function myErrorHandler(event,thrownError) { alert("Ajax request completed with response code " + xhr.status); });