重写jquery ajax 方法

方法一

// TODO 主要功能为重写ajax
$.ajaxSetup({
    cache: false,
    headers: {
        "xxxxx": "xxxxx"
    },
    beforeSend: function (XMLHttpRequest) {

    },
    complete: function (XMLHttpRequest, textStatus) {

    },
    error: function (xhr, textStatus, errorThrown) {
        
    }
});

方法二

(function($) {
    // 首先备份下jquery的ajax方法
    var _ajax = $.ajax;

    // 重写jquery的ajax方法
    $.ajax = function(options) {
        // 备份opt中error和success方法
        var callback = {
            "beforeSend" : function(XHR) {
            },
            "complete" : function(XHR, TS) {
            },
            "error" : function(XMLHttpRequest, textStatus, errorThrown) {
            },
            "success" : function(data, textStatus) {
            }
        }

        // 判断参数中是否有beforeSend回调函数
        if (options.beforeSend) {
            callback.beforeSend = options.beforeSend;
        }

        // 判断参数中是否有complete回调函数
        if (options.complete) {
            callback.complete = options.complete;
        }

        // 判断参数中是否有error回调函数
        if (options.error) {
            callback.error = options.error;
        }

        // 判断参数中是否有success回调函数
        if (options.success) {
            callback.success = options.success;
        }

        // 扩展增强处理
        var _opt = $.extend(options, {
            error : function(XMLHttpRequest, textStatus, errorThrown) {
            // 错误方法增强处理
                    callback.error(XMLHttpRequest, textStatus, errorThrown);
            },
            success : function(data, textStatus) {
                    // 成功回调方法增强处理
                    callback.success(data, textStatus);
            },
            beforeSend : function(XHR) {
                    // 提交前回调方法
                    callback.beforeSend(XHR);
            },
            complete : function(XHR, TS) {
                    // 请求完成后回调函数 (请求成功或失败之后均调用)。
                    callback.complete(XHR, TS);
            }
        });

        // 返回重写的ajax
        return _ajax(_opt);
    };
})(jQuery);