问题 Javascript:如何阻止多个jQuery ajax错误处理程序?


团队成员将此项目纳入我们的项目

$(function() {
    $("body").bind("ajaxError", function(event, XMLHttpRequest, ajaxOptions, thrownError){
        alert(thrownError);
    });
}

但是我想压制我的一个错误(因为它会是噪音并且不需要验证)

function blah() {

    ...

    errFunc = function(event, xhr, opts, errThrown) {
        //what could I do here?
        //event.stopImmediatePropagation()?
    }

    $.ajax({
        url        : '/unimportant_background_refresh',
        type       : 'GET',
        data       : { },
        dataType   : 'json',
        success    : updateBackgroundStuff,
        error      : errFunc,  // Suppresses error message.
    });

}

我该如何阻止所有错误发生?我可以在错误函数中执行某些操作,例如 { event.StopPropogation(); } 或者我必须找出一些机制,让捕获所有选择性地忽略了吗?


5924
2017-11-08 13:52


起源

stackoverflow.com/questions/7436195/... - aziz punjani


答案:


全球事件可以被禁用,对于特定的Ajax请求,通过传递全局选项,如下所示:

 $.ajax({
   url: "test.html",
   global: false,
   // ...
 });

取自: http://docs.jquery.com/Ajax_Events


16
2017-11-08 13:58





我只想在你的代码中抛出一个布尔值,默认为false。将其设置为true的第一次错误被抛出,并确保在误差函数的开始检查如此。

就像是:

function blah() {
    var errorHappened = false;

    ...

    errFunc = function(event, xhr, opts, errThrown) {
        if (errorHappened)
            return;

         errorHappened = true;

         // handle the errror.

    }

    // the rest of your code

}

0
2017-11-08 13:58



其实你会希望在全球AJAX错误处理布尔,你将它设置在当地Ajax调用。 - aziz punjani