1、axios
底層封裝是XMLHttpRequest對象,實(shí)現(xiàn)原理跟ajax一樣, 通過封裝Promise()對象來處理結(jié)果
例子如下: 封裝Axios對象進(jìn)行回調(diào) get方法
var axios = {
getMethod:function(url){
var xhr = new XMLHttpRequest()
reture Promise((resolve,reject)=>{
xhr.open('GET',url,true)
xhr.onreadstatechange = function(){
if(xhr.readState == 4){
if(xhr.status == 200){
resolve(xhr.responseText)
}
}
}
xhr.send()
})
}
}
2、已經(jīng)封裝好的Axios例子
axios({
method:"get | post",
url:"發(fā)送的地址",
data:{}
})
.then(
item=>{}
)
.catch(info=>{})
二、fetch
fetch 是基于ES6語法中Proimse()對象編寫,代碼簡潔少,可以認(rèn)為是Axios替代一種方法,支持
async / await。
1 、fetch只對網(wǎng)絡(luò)請求報錯,對400,500都當(dāng)做成功的請求,服務(wù)器返回 400,500 錯誤碼時并不會 reject,只有網(wǎng)絡(luò)錯誤這些導(dǎo)致請求不能完成時,fetch 才會被 reject。
2 、fetch默認(rèn)不會帶cookie,需要添加配置項(xiàng): fetch(url, {credentials: 'include'})
3、fetch不支持abort,不支持超時控制,使用setTimeout及Promise.reject的實(shí)現(xiàn)的超時控制并不能阻止請求過程繼續(xù)在后臺運(yùn)行,造成了流量的浪費(fèi)
4)fetch沒有辦法原生監(jiān)測請求的進(jìn)度,而XHR可以
try{
let response= awiat fetch(
let data=response.json()
/doSomething/
) catch(){
conosloe.log(err)
}
}
三、ajax
var xhr= new XMLHttpRequest();
xhr.onreadystatechange =function(){
if(xhr.readyState == 4){
if(xhr.status == 200){
consloe.log(xhr.responseText)
}
}
}
xhr.open("post","目標(biāo)響應(yīng)",ture);
//讓Ajax已提交表單的方式,發(fā)起Post的Ajax請求
xhr.setRequestHeader("Content-Type","application/x-www-form-urlncoded");
xhr.send("username"+username+"possword"+possword)
基于juqery的ajax
$.ajax({
url:"", //請求的url地址
dataType:"json", //返回格式為json
async:true,//請求是否異步,默認(rèn)為異步,這也是ajax重要特性
data:{"id":"value"}, //參數(shù)值
type:"POST | GET", //請求方式
beforeSend:function(){
//請求前的處理
},
success:function(req){
//請求成功時處理
},
complete:function(){
//請求完成的處理
},
error:function(){
//請求出錯處理
}
});
另外有需要云服務(wù)器可以了解下創(chuàng)新互聯(lián)cdcxhl.cn,海內(nèi)外云服務(wù)器15元起步,三天無理由+7*72小時售后在線,公司持有idc許可證,提供“云服務(wù)器、裸金屬服務(wù)器、高防服務(wù)器、香港服務(wù)器、美國服務(wù)器、虛擬主機(jī)、免備案服務(wù)器”等云主機(jī)租用服務(wù)以及企業(yè)上云的綜合解決方案,具有“安全穩(wěn)定、簡單易用、服務(wù)可用性高、性價比高”等特點(diǎn)與優(yōu)勢,專為企業(yè)上云打造定制,能夠滿足用戶豐富、多元化的應(yīng)用場景需求。