小编典典

为请求禁用一些jQuery全局Ajax事件处理程序

ajax

假设我定义了一些全局Ajax事件处理程序(ajaxStart,ajaxStop和ajaxError)。通常,我对此表示满意,但对于一个请求,我想禁用ajaxError处理程序,但仍照常运行ajaxStart和ajaxStop处理程序。在jQuery的AJAX功能的文件中提到,可以设置为false,并传递到$就功能禁用所有全局AJAX事件处理程序的“全球性”的参数,但他们没有提及任何办法只能禁用一些全球处理器。

我可以通过对传递给ajaxError函数的ajaxSettings对象的“
url”属性进行测试,来防止ajaxError处理程序,但这似乎有些笨拙。这里是否有人知道一种禁用ajaxError函数运行的方法,这种方法对于查看$
.ajax函数调用位置的人来说是显而易见的?

如果有人想看它,我可以提供一个简单的例子。


阅读 278

收藏
2020-07-26

共1个答案

小编典典

这是可能的,而且并不难。

您只需要设置全局错误处理程序(.ajaxError)即可接收jQuery可以提供给它的一些参数:

$("div.log").ajaxError(function(evt, xhr, settings) {
    if(settings.suppressErrors) {
        return;
    }

    // Normal processing
});

此后,您可以将所添加suppressErrors: true的任何AJAX请求添加到设置中,如果失败,则错误处理程序将返回而不执行通常的操作。

看到它在行动

2020-07-26