我有一个AJAX错误的全局错误处理程序:
$(document).ready(function() {
$(document).ajaxError(ajaxErrorHandler);
});
function ajaxErrorHandler(event, jqxhr, settings, exception) {
// ...
// How to stop further processing of the AJAX response here?
}
一旦我处理了错误,我就不希望进一步处理AJAX响应。如何停止执行complete
回调? (我的AJAX请求是在库中进行的,我无法定义它们的参数。)
更新
调用jqxdr.abort()
无法完成任务。
答案 0 :(得分:2)
您可以在处理程序中尝试此操作:
function ajaxErrorHandler(event, jqxhr, settings, exception) {
// ...
// How to stop further processing of the AJAX response here?
event.stopPropagation();
}
它将停止对父处理程序的事件传播。
答案 1 :(得分:1)
以下是触发的ajax事件的完整列表:jQuery doc
无论请求状态(成功或错误)如何,都将调用complete
和ajaxComplete
事件的目的。如果它的执行取决于ajaxErrorHandler
中设置的某些条件,我认为它不应再被绑定到complete
。
您可以在complete
和success
上插入一次当前的error
回调,以便在全局事件处理程序中调用evt.stopPropagation()
和evt.stopImmediatePropagation()
阻止回调执行。
处理成功/失败事件继承的jQuery代码是here。
如您所见,它涉及2个不同的延迟对象(一个处理resolved / rejected
部分,一个处理completed
部分)和两个单独的事件触发器。
没有内置方法可以干净地中断此流程:全局ajaxError
事件的处理与以下complete
和ajaxComplete
事件完全分开。