【问题标题】:how to manage ajax response errors如何管理 ajax 响应错误
【发布时间】:2013-07-18 12:19:58
【问题描述】:

我正在编写javascript 应用程序,我正在使用backbone.js。在应用程序上,我在一个页面中有几个视图大多数视图同时将request(请求backbone.jsajax-query)发送到服务器 strong>,他们在一个密切的时期内取得了结果。如果服务器或网络出现问题,一些response 会损坏并返回错误。问题是所有错误都需要通过警报向用户显示,尽管看到越来越多的用户警报很无聊。如何管理警报? 我使用settimeout 来显示警报,但这种方式对减少 警报计数没有帮助。 如果你知道另一种方式,请告诉我?

【问题讨论】:

    标签: javascript jquery ajax backbone.js response


    【解决方案1】:
        function alertMajorError(errMsg) {
            errMsg = typeof errMsg !== 'undefined' ? errMsg : 'Fatal Error!';
            var n = noty({layout:'center',type:'error',text:errMsg,timeout:false});
        }
        $(document).ajaxError(function(event, jqxhr, settings, exception) {
            if (exception == 'abort') return false;
            alertMajorError('An AJAX error [' + exception + '] occurred in script: ' + settings.url + '<br \><br \>Please report this to the development team!');
            console.log(event, jqxhr, settings, exception);
    });
    

    你可以像我一样在你的主 JS 文件中设置一个默认的AJAX error 记者。我使用 jQuery noty 插件!

    【讨论】:

    • P.S.如果您想知道我为什么忽略 abort 错误,那是因为 Autocomplete 和其他一些异步小部件会故意中止,以便在输入参数发生变化时它们可以重新开始。它经常发生,所以我禁用了这些。
    【解决方案2】:

    必须显示所有错误... 好的,然后不要警报(),使用带有错误的弹出 div 并将它们显示在通知区域中,例如。 g.,在您页面的左上角。 看看gmail是怎么做的:当出现ajax错误时,页面中心会显示一个小通知,用户可以阅读,但整个界面并没有被屏蔽。

    【讨论】:

      【解决方案3】:

      最近,我读到了Promises,我认为这对我有帮助。我希望,这对其他人也有帮助。这里是example,用于处理许多请求。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-01-20
        • 2014-02-24
        • 2012-09-12
        • 2016-01-24
        • 2016-10-29
        • 2013-02-12
        • 2019-05-26
        • 1970-01-01
        相关资源
        最近更新 更多