如何获得ajax调用的默认错误

How to get default error of ajax call

本文关键字:默认 错误 调用 何获得 ajax      更新时间:2023-09-26

好的,我要做的是根据它的错误代码提醒ajax错误,我在网站上有很多ajax调用,所以我使用全局ajax错误处理函数。

但是我想要的是,如果一些ajax调用已经有默认错误,那么显示没有全局。

$(document).ready(function(){
    $(document).ajaxError(e,xhr,opt){
        if(xhr.error){
            //Don't do anything
        } else {
            alert('You have an error');
        }
    }
}
第一个函数:
$.ajax({
    type:"post",
    url:"page.php",
    data:"name=mohit&lastname=bumb",
    error:function(){
        alert('error');
    }
});

第二个功能:

$.ajax({
    type:"post",
    url:"page.php",
    data:"name=mohit&lastname=bumb",
});

那么在第二种情况下,它应该显示你有一个错误在第一种情况下,它只是错误

是的,你可以,但是你必须重写jQuery默认的$.ajax方法。检查我在其中一个项目中使用的以下代码。确保在jQuery之后加载脚本。

我的场景是-

  1. 该网站有很多ajax部分视图,必须检查用户是否登录或没有。所以我必须重写jquery调用来检查它。

  2. 我还必须在任何ajax调用时显示加载器

  3. 还有一件事,有些js是通过ajax加载的,所以我增加了一个检查url是一个。js文件还是正常的url。

我已经取出了我的项目机密的敏感代码。剩下的在这里。这可能对你有帮助。

$(document).ready(function () {
    var oldjQuery = [];
    oldjQuery["ajax"] = $.ajax;
    oldjQuery["load"] = $.load;
    var newOptions = [];
    //override ajax
    jQuery.ajax = function (options) {
        newOptions["ajax"] = $.extend({}, options);
            //override the success callback
            newOptions["ajax"].success = function (data, textStatus, jqXhr) {
                try {
                    if (options.url.indexOf('.js') <= -1) {
                        //this is a normal success call, do nothing
                    }
                }
                catch (err) {
                         //... my other codes, incase any error occurred
                }
                if (typeof options.success != 'undefined') { 
                        //the ajax call has a success method specified, so call it
                        options.success(data, textStatus, jqXhr);
                    }
            };
            //override the error callback
            newOptions["ajax"].error = function (jqXhr, textStatus, errorThrown) {
                try {
                    if (options.url.indexOf('.js') <= -1) {
                    //this is a normal success call, do nothing
                    }
                }catch (y) {
                    //... my other codes, incase any error occurred
                }
                //the ajax call has an error method specified, so call it
                if (typeof options.error != 'undefined') {
                    options.error(jqXhr, textStatus, errorThrown);
                }
            };
            return oldjQuery["ajax"](newOptions["ajax"]);
        };
        //override load function
    jQuery.load = function (url, data, completeCallback, ignore) {
        newOptions["load"].completeCallback = function (d, textStatus, jqXhr) {
            try {
                if (url.indexOf('.js') <= -1) {
                    //codes
                }
            } catch (err) {
                try {
                    //codes
                }catch (err2) {
                }
            }
            if (typeof completeCallback != 'undefined') {
                    //call the default completed callback
                    completeCallback(d, textStatus, jqXhr);
                }
            };
            return oldjQuery["load"](url, data, newOptions["load"].completeCallback);
        };
});