Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/88.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
jQuery全局ajax错误处理程序在";“本地”;一_Jquery - Fatal编程技术网

jQuery全局ajax错误处理程序在";“本地”;一

jQuery全局ajax错误处理程序在";“本地”;一,jquery,Jquery,我希望全局处理401错误,而仅局部处理其他错误。 本地指AJAX调用的fail处理程序内部 为此,我在文档上实现了一个ajaxError处理程序。 但是,问题是本地fail处理程序在全局处理程序之前被触发。 因此,全局处理程序中的event.stopImmediatePropagation()是无用的 我怎样才能使全局的第一个被触发,从而阻止本地的第一个被触发呢。 谢谢。如果不将所有ajax请求包装到一个助手方法中,就无法将“全局”错误处理程序直接绑定到jqXHR并放弃全局ajaxError处理

我希望全局处理
401
错误,而仅局部处理其他错误。 本地指AJAX调用的
fail
处理程序内部

为此,我在
文档
上实现了一个
ajaxError
处理程序。 但是,问题是本地
fail
处理程序在全局处理程序之前被触发。 因此,全局处理程序中的
event.stopImmediatePropagation()
是无用的

我怎样才能使全局的第一个被触发,从而阻止本地的第一个被触发呢。
谢谢。

如果不将所有ajax请求包装到一个助手方法中,就无法将“全局”错误处理程序直接绑定到jqXHR并放弃全局ajaxError处理程序。即使这样,我也不确定你是否可以在不做更多工作的情况下阻止它到达额外的错误处理程序,因为从技术上讲,这些都不是事件。这很烦人。如果全局处理程序在本地侦听器之后触发,为什么要有全局处理程序?。。。现在做包装已经太晚了,不一定太晚。您可以创建一个包装器,而无需实际更改方法的名称。True,但更简单的方法是查找需要抑制的失败方法,并在执行任何操作之前在if语句中包含它们的所有代码,检查状态是否为非401。但这是一个糟糕的方法。你考虑过使用状态码回调吗?可以使用ajaxSetup全局分配。但我不完全确定是否可以防止错误回调发生,因为它仍然是一个延迟对象。要么通过,要么失败。这两者都不行。
    var statusCodeError = function(error) {
        throw new Error('--> Error code ' + error.status + ' on XMLHttpRequest');
    };
    var settings = {
        type        : 'POST',
        url         : '/ajax-script.php',
        dataType    : 'json',
        context     : document.body,
        statusCode  : {
            404: statusCodeError,
            301: statusCodeError,
            302: statusCodeError,
            401: statusCodeError,
            500: statusCodeError
        }, failure : statusCodeError
    };

    $.ajaxSetup(settings);