ajax預(yù)過濾器(發(fā)送請求前設(shè)置):
$.ajaxPrefilter(function( options, originalOptions, jqXHR ) {
? // options 是請求的選項// originalOptions 值作為提供給Ajax方法未經(jīng)修改的選項握巢,因此,沒有ajaxSettings設(shè)置中的默認(rèn)值// jqXHR 是請求的jqXHR對象})
$.ajaxSetup方法:
定義和用法
ajaxSetup() 方法為將來的 AJAX 請求設(shè)置默認(rèn)值松却。
語法
$.ajaxSetup({name:value, name:value, ... })
該參數(shù)為帶有一個或多個名稱/值對的 AJAX 請求規(guī)定設(shè)置暴浦。
下面的表格中列出了可能的名稱/值:
名稱值/描述
async布爾值溅话,表示請求是否異步處理。默認(rèn)是 true歌焦。
beforeSend(xhr)發(fā)送請求前運行的函數(shù)公荧。
cache布爾值,表示瀏覽器是否緩存被請求頁面同规。默認(rèn)是 true循狰。
complete(xhr,status)請求完成時運行的函數(shù)(在請求成功或失敗之后均調(diào)用,即在 success 和 error 函數(shù)之后)券勺。
contentType發(fā)送數(shù)據(jù)到服務(wù)器時所使用的內(nèi)容類型绪钥。默認(rèn)是:"application/x-www-form-urlencoded"。
context為所有 AJAX 相關(guān)的回調(diào)函數(shù)規(guī)定 "this" 值关炼。
data規(guī)定要發(fā)送到服務(wù)器的數(shù)據(jù)程腹。
dataFilter(data,type)用于處理 XMLHttpRequest 原始響應(yīng)數(shù)據(jù)的函數(shù)。
dataType預(yù)期的服務(wù)器響應(yīng)的數(shù)據(jù)類型儒拂。
error(xhr,status,error)如果請求失敗要運行的函數(shù)寸潦。
global布爾值,規(guī)定是否為請求觸發(fā)全局 AJAX 事件處理程序社痛。默認(rèn)是 true见转。
ifModified布爾值,規(guī)定是否僅在最后一次請求以來響應(yīng)發(fā)生改變時才請求成功蒜哀。默認(rèn)是 false斩箫。
jsonp在一個 jsonp 中重寫回調(diào)函數(shù)的字符串。
jsonpCallback在一個 jsonp 中規(guī)定回調(diào)函數(shù)的名稱撵儿。
password規(guī)定在 HTTP 訪問認(rèn)證請求中使用的密碼乘客。
processData布爾值,規(guī)定通過請求發(fā)送的數(shù)據(jù)是否轉(zhuǎn)換為查詢字符串淀歇。默認(rèn)是 true易核。
scriptCharset規(guī)定請求的字符集。
success(result,status,xhr)當(dāng)請求成功時運行的函數(shù)浪默。
timeout設(shè)置本地的請求超時時間(以毫秒計)牡直。
traditional布爾值,規(guī)定是否使用參數(shù)序列化的傳統(tǒng)樣式浴鸿。
type規(guī)定請求的類型(GET 或 POST)井氢。
url規(guī)定發(fā)送請求的 URL。默認(rèn)是當(dāng)前頁面岳链。
username規(guī)定在 HTTP 訪問認(rèn)證請求中使用的用戶名花竞。
xhr用于創(chuàng)建 XMLHttpRequest 對象的函數(shù)。
ajax攔截器(批量處理ajax請求結(jié)果):
$.ajaxSetup({
? complete: function(XMLHttpRequest, textStatus) {
? ? //XMLHttpRequest.responseJSON為服務(wù)器放回數(shù)據(jù) }
})
ajax攜帶cookie:
$.ajax({
? type: "post",
? url:"/url",
? dataType: "json",
? //攜帶cookie
xhrFields: {
? ? withCredentials: true
? },
? crossDomain: true,
? data:{},
? success:function(data){
? },
? error:function(e){
? }
})
批量處理攜帶cookie:
$.ajaxPrefilter(function( options, originalOptions, jqXHR ) {
? //攜帶cookieoptions.xhrFields = {
? ? withCredentials: true? }
})
vue-resource實現(xiàn)攔截器批量處理與攜帶cookie:
Vue.http.interceptors.push(function(request, next) {
? //攜帶cookie
? request.credentials = true;
? next((response) => {
? ? //response.bodyText為服務(wù)器放回的json字符串
? ? console.log(response.bodyText)
? })
})
axios實現(xiàn)請求攔截器與響應(yīng)攔截器
axios請求攔截器:
//axios請求攔截器
axios.interceptors.request.use(function (config) {
// 在發(fā)送請求之前做些什么
? return config;
}, function (error) {
? // 對請求錯誤做些什么
? return Promise.reject(error);
});
axios響應(yīng)攔截器:
//axios響應(yīng)攔截器
axios.interceptors.response.use(function (response) {
? // 對響應(yīng)數(shù)據(jù)做點什么
return response;
}, function (error) {
? // 對響應(yīng)錯誤做點什么
? return Promise.reject(error);
});
axios攜帶cookie
axios.defaults.withCredentials =true;