为什么要重写jquery的ajax方法

     我们在使用jquery的ajax方法时通常并不会直接去用ajax方法,而是会对它进行封装一下,好处是可以统一处理一些事件。如统一加载提示,统一报错提示,统一请求路径路由等,总之好处多多。

    重写原理就是先备份ajax方法,然后覆盖ajax方法。

     

//先备份jquery的ajax
    var _a=$.ajax;  
       
    //重写ajax方法
    $.ajax=function(ops){  
        //备份用户传入的参数 
        //就是调用方自己定义的error success的方法
        var userFunction = {  
            error:function(XMLHttpRequest, textStatus, errorThrown){},  
            success:function(data, textStatus){}  
        };
        //如果调用方传入了执行成功的回调方法,那么保存一个备份,等待后面执行
        if(ops.success && typeof(ops.success)!=undefined){  
            userFunction.success=ops.success;  
        } 
        //如果调用方传入了执行成功的回调方法,那么保存一个备份
        if(ops.error && typeof(ops.error)!=undefined){  
            userFunction.error=ops.error;  
        }  
        //统一ajax请求的路径
        ops.url="https://www.itxst.com/?ajax="+ops.url;
        //每次发送ajax请求都必须带上token
        if(ops.data && typeof(ops.data)!=undefined){  
                       ops.data.token="123"; 
                  }  
           
        //合并用户传入的参数和我们要统一处理的方法
        var _ops = $.extend(ops,{  
            error:function(XMLHttpRequest, textStatus, errorThrown){
                 //统一报错提示
                userFunction.error(XMLHttpRequest, textStatus, errorThrown);  
            },  
            success:function(data, textStatus){
                //统一执行成功后处理  
                userFunction.success(data, textStatus);  
            },  
            beforeSend:function(xhr){ 
                   //统一带上标识 
                 xhr.setRequestHeader('userid',"itxst"); 
            }
        }); 
        //合并好后执行ajax请求 
        return _a(_ops);  
    };


Quote:https://www.itxst.com/detail/qqfaqvij.html