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

Abd*_*ziz 6 javascript ajax jquery http http-status-codes

我有一个Web应用程序,通过AJAX请求和发送数据,作为响应,我的服务器端发送HTTP状态代码,具体取决于具体情况.所以例如,如果用户在他登录时尝试登录,我可能会返回一个400 HTTP status code.最后我用警报处理它等等.

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

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

我现在在做什么:

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

  statusCode: {
        500: function(data) {
            alert('Some friendly error message goes here.');
        }
Run Code Online (Sandbox Code Playgroud)

对我来说,这似乎是一种矫枉过正,随着我的网络应用程序的发展,以及我创建更多的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);
Run Code Online (Sandbox Code Playgroud)

Mat*_*all 12

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

描述:为将来的Ajax请求设置默认值.

例:

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