$.ajaxPrefilter()函數(shù)用于指定預(yù)先處理Ajax參數(shù)選項(xiàng)的回調(diào)函數(shù)
ajax請(qǐng)求攔截器 每次發(fā)送ajax請(qǐng)求前先攔截拼接url地址
語法
$.ajaxPrefilter( [ dataType ,] handler )
ajax的正常請(qǐng)求狀態(tài)
$.ajax({
type: "method",
url: "url",
data: "data",
dataType: "dataType",
success: function (response) {
// 成功狀態(tài)要執(zhí)行的回調(diào)函數(shù)
}
});
如果一次開發(fā)需要多次重復(fù)調(diào)用接口,又或者后期項(xiàng)目需要更換接口地址,為方便維護(hù),可以設(shè)置ajax請(qǐng)求攔截器,為每次ajax請(qǐng)求發(fā)送之前做一些配置。
參數(shù)
dataType
一個(gè)或多個(gè)用空格隔開的數(shù)據(jù)類型所組成的字符串。如果未指定該參數(shù),則表示所有數(shù)據(jù)類型??捎玫臄?shù)據(jù)類型為"xml"、 "html"、 "text"、 "json"、 "jsonp"、 "script"。該字符串為它們之間的任意組合(多種類型用空格隔開),例如:"xml"、 "text html"、 "script json jsonp"。
handler
用于預(yù)處理參數(shù)選項(xiàng)的回調(diào)函數(shù)。它有以下3個(gè)參數(shù):
- options:(Object對(duì)象)當(dāng)前AJAX請(qǐng)求的所有參數(shù)選項(xiàng)。
- originalOptions:(Object對(duì)象)值作為提供給Ajax方法未經(jīng)修改的選項(xiàng),因此,沒有ajaxSettings設(shè)置中的默認(rèn)值
- jqXHR:當(dāng)前請(qǐng)求的jqXHR對(duì)象。
返回值
$.ajaxPrefilter()函數(shù)沒有返回值,或者說其返回值為undefined。
$.ajaxPrefilter((options) => {
options.url = 'http://地址' + options.url;
// 配置ajax請(qǐng)求頭 當(dāng)請(qǐng)求地址為/my的時(shí)候添加請(qǐng)求頭
if (options.url.indexOf('/my/') != -1) {
options.headers = {
Authorization: localStorage.getItem('token') || ''
}
}
// 無論請(qǐng)求成功還是失敗,最終調(diào)用complete回調(diào)
options.complete = function(res) {
if (res.responseJSON.status == 1 && res.responseJSON.message == '身份認(rèn)證失敗!') {
localStorage.removeItem('token');
location.href = '/login.html';
}
}
})