本文由何小蒙原創(chuàng),如需轉(zhuǎn)載要注明來源升敲。
一直用的axios答倡,屬于會(huì)用但是對(duì)原理不精通,知道axios是對(duì)ajax的封裝÷康常現(xiàn)在重新學(xué)習(xí)下瘪撇。
注:本人理解,僅供參考鼻弧。
js原生使用方法
var xmlhttp = new XMLHttpRequest();
xmlhttp.open('GET','../../JIEKOU', true); // GET方法異步請(qǐng)求
xmlhttp.send(null);
send里面如果不需要發(fā)送參數(shù)设江,必須傳入null锦茁。因?yàn)檫@個(gè)參數(shù)對(duì)有些瀏覽器是必需的攘轩。
XMLHttpRequest 對(duì)象
這個(gè)對(duì)象是用于我們熟知的功能:對(duì)服務(wù)器發(fā)送請(qǐng)求,處理從服務(wù)器返回的數(shù)據(jù)码俩。
readyState
0:未初始化
1:已經(jīng)open()但是還沒send()
2:已經(jīng)send()但是還沒返回值
3:獲取到部分返回值
4:獲取到全部返回值
通常我們只對(duì)狀態(tài)4感興趣度帮,通過onreadystatechange來判斷狀態(tài)的改變
xmlhttp.onreadystatechange = function() {
if (xmlhttp.readystate == 4) {
// 此處使用xhr對(duì)象不使用this是因?yàn)閛nreadystatechange作用域的問題
// 使用this此函數(shù)會(huì)執(zhí)行失敗
}
}
XMLHttpRequest 2
因?yàn)閤hr用的人太多了,w3c就直接出了個(gè)規(guī)范稿存,還稍微擴(kuò)展了下笨篷。
- formdata 可以直接用表單了,通過append設(shè)置表單
- timeout 設(shè)置超時(shí)瓣履,超時(shí)后用ontimeout來處理
- overrideMimeType 重寫xhr響應(yīng)的MIME類型
最后這個(gè)咱基本也沒用過率翅,以前基本是用來處理xml文件的,大致了解下袖迎。估計(jì)好久不用過段時(shí)間又得忘??
其他相關(guān)系列:
前端之a(chǎn)jax筆記(一)
前端之a(chǎn)jax筆記(二)
前端之a(chǎn)jax筆記(三)