【问题标题】:Javascript: How to stop multiple jQuery ajax error handlers?Javascript:如何停止多个 jQuery ajax 错误处理程序?
【发布时间】:2011-12-24 11:40:13
【问题描述】:

一位团队成员将其放入我们的项目中

$(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.
    });

}

请问如何阻止 catch all 错误的发生?我可以在错误函数中做一些事情,比如{ event.StopPropogation(); },还是我必须制定一些机制让所有捕获都选择性地忽略事情?

【问题讨论】:

标签: javascript jquery error-handling


【解决方案1】:

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

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

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

【讨论】:

    【解决方案2】:

    我只会在默认为 false 的代码中添加一个布尔值。在第一次抛出错误时将其设置为 true,并确保在错误函数开始时检查是否为 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
    
    }
    

    【讨论】:

    • 实际上,您希望在全局 ajax 错误处理程序中使用布尔值,并在本地 ajax 调用中设置它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-04-06
    • 2023-04-05
    • 1970-01-01
    • 2013-01-04
    • 2011-06-16
    • 2011-04-06
    • 2012-02-25
    相关资源
    最近更新 更多