1.特點:在不改變原有的請求方法的情況下對$.ajax進行封裝块蚌。
2.試用場景:
(1).不想每一次請求都寫error:function(){}
(2).把請求的接口分成兩部風前一部分(整個項目都不會變),后一個(會變)趣效,便于切換測試和上線環(huán)境动知。
等等。
/*
這種封裝方法的思想:
在不改變原有請求方法的同時妒峦,對請求的參數(shù)進行改變唯竹。
*/
(function($) {
//1.得到$.ajax的對象 保存原來$.ajax的指向 其實是一個指針變量
var_ajax=$.ajax;
//重寫$.ajax的方法
$.ajax=function(options) {
console.log(options.type);
//2.每次調(diào)用發(fā)送ajax請求的時候定義默認的error處理方法
varfn={
error:function(XMLHttpRequest,textStatus,errorThrown) {
alert("請求失敗");
},
success:function(data,textStatus) {
console.log(data);
},
beforeSend:function(XHR) {
console.log("網(wǎng)絡(luò)請求之前");
},
complete:function(XHR,TS) {
console.log("網(wǎng)絡(luò)請求完成");
}
}
//3.如果在調(diào)用的時候?qū)懥薳rror的處理方法,就不用默認的
if(options.error) {
fn.error=options.error;
}
if(options.success) {
fn.success=options.success;
}
if(options.beforeSend) {
fn.beforeSend=options.beforeSend;
}
if(options.complete) {
fn.complete=options.complete;
}
//4.擴展原生的$.ajax方法,返回最新的參數(shù)
var_options=$.extend(options, {
error:function(XMLHttpRequest,textStatus,errorThrown) {
fn.error(XMLHttpRequest, textStatus, errorThrown);
},
success:function(data,textStatus) {
fn.success(data, textStatus);
},
beforeSend:function(XHR) {
fn.beforeSend(XHR);
},
complete:function(XHR,TS) {
fn.complete(XHR,TS);
}
});
//5.將最新的參數(shù)傳回ajax對象 這才是真正的發(fā)起網(wǎng)絡(luò)請求
_ajax(_options);
};
})(jQuery);
外部調(diào)用
$.ajax({
type:"get",
url:"https://api.douban.com/v2/book/1220562",
async:true,
dataType:"jsonp"
});
注意事項:引用正確的jQuery庫我這里是jquery-3.2.1.min.js