需要考虑Success、Error、Done
(function($){
// 备份jquery的ajax方法
var _ajax = $.ajax;
// 重写jquery的ajax方法
$.ajax = function(opt) {
var dtd = $.Deferred();
// 备份opt中error和success方法
var fn = {
error: function(XMLHttpRequest, textStatus, errorThrown){},
success: function(data, textStatus, XMLHttpRequest){}
}
if(opt.error) {
fn.error = opt.error;
}
if(opt.success) {
fn.success = opt.success;
}
// 扩展增强处理
var _opt = $.extend(opt, {
error: function(XMLHttpRequest, textStatus, errorThrown) {
// 错误方法增强处理
// 拦截处理
fn.error(XMLHttpRequest, textStatus, errorThrown);
},
success: function(data, textStatus, XMLHttpRequest) {
// 成功回调方法增强处理
// 拦截处理
fn.success(data, textStatus, XMLHttpRequest);
}
});
_ajax(_opt).done(function(data) {
// 拦截处理
dtd.resolve(data)
});
return dtd.promise();
};
})(jQuery);
````