引言
XHLHttpRequest(XHR)是現(xiàn)代web開(kāi)發(fā)中不可或缺的技術(shù)之一放闺。它允許我們?cè)诓粩嗨⑿抡麄€(gè)頁(yè)面的情況下,與服務(wù)器進(jìn)行數(shù)據(jù)交換鸽扁,readyState是XHR的一個(gè)屬性顾稀,它表示請(qǐng)求/響應(yīng)過(guò)程的當(dāng)前活動(dòng)階段。了解readyState對(duì)于高效使用(XHR)至關(guān)重要低斋。
什么是XHLHttpRequest?
readyState是XHLHttpRequest對(duì)象的一個(gè)只讀屬性,它代表了當(dāng)前的只讀狀態(tài)匪凡,readystate的值是一個(gè)整數(shù)膊畴,它隨著請(qǐng)求過(guò)程的不同階段而變化
- 0 (UNSENT):請(qǐng)求未初始化。尚未調(diào)用open()方法
- 1 (OPEND):服務(wù)器連接已建立病游,已調(diào)用open()方法唇跨,但尚未調(diào)用send()方法
- 2 (HEANDERS_RECEICED):請(qǐng)求已接收,send()方法已經(jīng)調(diào)用衬衬,且頭部和狀態(tài)已可獲取
- 3 (LOADING):請(qǐng)求獲取中买猖,響應(yīng)體正在下載中,此時(shí)部分?jǐn)?shù)據(jù)可能已經(jīng)可用滋尉。
- 4 (DONE):請(qǐng)求完成玉控。整個(gè)請(qǐng)求過(guò)程已完成,且數(shù)據(jù)響應(yīng)已就緒兼砖。
如何使用XHR readyState奸远?
要使用readtState我們首先要new一個(gè)XHLHttpRequest實(shí)例既棺,然后通過(guò)一個(gè)事件處理函數(shù)讽挟,來(lái)監(jiān)聽(tīng)readyStateChange事件,每當(dāng)readyState發(fā)生改變丸冕,都會(huì)觸發(fā)這個(gè)事件耽梅。
var xhr = new XHLHttpRequest()
xhr.onreadyStateChange = () => {
if(xhr.readyState === 4 && xhr.status === 200) {
// 請(qǐng)求成功,處理響應(yīng)數(shù)據(jù)
console.log(xhr.responsetText)
}
}
xhr.open('GET', 'http://baidu.com')
xhr.send(***)
注意事項(xiàng)
- readyState是一個(gè)只讀屬性胖烛,不可修改
- readyState的變化是同事發(fā)生的眼姐,但readyStateChange事件是異步發(fā)生的
- 在某些情況下readyState的值可能會(huì)跳過(guò)某些狀態(tài)诅迷,例如從0直接到4