javascript - 如何处理所有 AJAX 调用的特定 HTTP 错误?

标签 javascript jquery ajax http http-status-codes

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

但是处理这些 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);

最佳答案

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

Description: Set default values for future Ajax requests.

例子:

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

关于javascript - 如何处理所有 AJAX 调用的特定 HTTP 错误?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11705684/

相关文章:

javascript - 为什么我不能从 Ajax 函数返回 responseText?

javascript - CKEditor 变量在控制台中可用,但在 Chrome 用户脚本中不可用?

javascript - 将正方形 div 动画化为梯形

javascript - 仅当站点位于本地主机时、仅当启用 JavaScript 时、仅在 IE8 模式下,IE8 才会在重新加载时崩溃

javascript - 获取上传进度时 XMLHttpRequest 的替代方案

php - 数据表:根据数据库值隐藏列

javascript - 在javascript中循环实例化类使用最后一个值

javascript - 在初始化之前引用方法

javascript - 使用 document.querySelector 从网站获取值/名称

javascript - jQuery 调整大小(),滚动(): good practice to use variables?