Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/422.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何获取ajax调用的默认错误_Javascript_Php_Jquery_Ajax - Fatal编程技术网

Javascript 如何获取ajax调用的默认错误

Javascript 如何获取ajax调用的默认错误,javascript,php,jquery,ajax,Javascript,Php,Jquery,Ajax,好的,我想做的是根据错误代码提醒ajax错误,我在网站上有很多ajax调用,所以我使用全局ajax错误处理函数 但我想要的是,如果某个ajax调用已经有默认错误,那么就显示没有全局错误 $(document).ready(function(){ $(document).ajaxError(e,xhr,opt){ if(xhr.error){ //Don't do anything } else { alert

好的,我想做的是根据错误代码提醒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",
});
第二个功能:

$.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
之后加载脚本

我的设想是——

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

  • 在进行任何ajax调用时,我还必须显示一个加载程序

  • 还有一件事,一些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);
            };
    });
    
    $(文档).ready(函数(){
    var oldjQuery=[];
    oldjQuery[“ajax”]=美元.ajax;
    oldjQuery[“加载”]=美元.load;
    var newOptions=[];
    //重写ajax
    jQuery.ajax=函数(选项){
    newOptions[“ajax”]=$.extend({},options);
    //覆盖成功回调
    newOptions[“ajax”].success=函数(数据、文本状态、jqXhr){
    试一试{
    
    如果(options.url.indexOf('.js')正常,但那只是输入了misatake not issueI我不认为你能做到这一点,那么全局错误处理程序如何知道ajax函数有一个自己的错误处理程序,它有一些参数可能像如果错误参数存在,那么它有自己的错误,我认为没有最简单的逻辑