【问题标题】:How to handle specific HTTP error for all AJAX calls?如何处理所有 AJAX 调用的特定 HTTP 错误?
【发布时间】:2015-06-19 18:36:12
【问题描述】:

我有一个网络应用程序,通过 AJAX 请求和发送数据,作为响应,我的服务器端根据情况发送 HTTP 状态代码。例如,如果用户在登录时尝试登录,我可能会返回400 HTTP status code。最终我用警报等方式处理它。

但处理这些 HTTP 状态代码变得过于繁重,因为我大量使用 AJAX。这意味着我将在每个 AJAX 请求中重复处理 HTTP 状态代码,这将导致代码重复,这是一种不好的做法。

所以,我正在寻找的是一种在一个地方处理所有这些错误的方法,所以我只需使用相同的代码处理所有400401 等。

我目前在做什么:

为每个 AJAX 调用手动处理错误。通过在$.ajax() 中使用statusCode

  statusCode: {
        500: function(data) {
            alert('Some friendly error message goes here.');
        }

随着我的 Web 应用程序的开发以及创建更多的 ajax 调用,这对我来说似乎有点过头了。我将一次又一次地重复这段代码。

目前,我唯一的想法是创建一个可以在 AJAX 之上运行的函数,例如:

    function doAjax(type,url, data, moreVars) {
//this function is just a SIMPLE example, could be more complex and flexible.
        $.ajax({
            type: type,
            url: url,
            data: data,
            moreOptions:moreVars,
            //now handling all status code.
            statusCode: {
                //handle all HTTP errors from one place.
            }
        });
    }

    doAjax("POST", 'mydomain.com/login.php', dataObj);

【问题讨论】:

    标签: javascript jquery ajax http http-status-codes


    【解决方案1】:

    您可以使用$.ajaxSetup() 注册全局错误状态处理程序。

    说明:为未来的 Ajax 请求设置默认值。

    例子:

    $.ajaxSetup({
        statusCode: {
            500: function(data) {
                alert('Some friendly error message goes here.');
            } 
        }   
    });
    

    【讨论】:

    • "注意:全局回调函数应该用它们各自的全局Ajax事件处理方法来设置——.ajaxStart().ajaxStop().ajaxComplete().ajaxError().ajaxSuccess()、@ 987654329@——而不是在 $.ajaxSetup() 的选项对象中。"
    猜你喜欢
    • 1970-01-01
    • 2013-07-03
    • 1970-01-01
    • 2014-02-24
    • 2010-09-29
    • 1970-01-01
    • 2017-12-01
    • 2012-09-25
    • 1970-01-01
    相关资源
    最近更新 更多