- Ajax與jQuery程序設(shè)計(jì)
- 程永恒
- 527字
- 2020-06-29 11:32:58
2.4 XMLHttpRequest對(duì)象的運(yùn)行周期
整個(gè)Ajax技術(shù)緊緊圍繞在XMLHttpRequest對(duì)象周?chē)私釾MLHttpRequest對(duì)象的運(yùn)行周期,就是了解Ajax應(yīng)用的運(yùn)行。
(1)Ajax應(yīng)用總是從創(chuàng)建XMLHttpRequest對(duì)象開(kāi)始。XMLHttpRequest對(duì)象的作用:運(yùn)行通過(guò)客戶端腳本來(lái)發(fā)送HTTP請(qǐng)求。Ajax應(yīng)用的第一步總是創(chuàng)建一個(gè)XMLHttpRequest實(shí)例,然后使用它來(lái)發(fā)送請(qǐng)求,這種請(qǐng)求可以使用GET方式,也可以使用POST方式。
(2)XMLHttpRequest發(fā)送完之后,服務(wù)器響應(yīng)何時(shí)到達(dá)?應(yīng)該如何處理服務(wù)器的響應(yīng)呢?Ajax的核心對(duì)象是XMLHttpRequest,它能觸發(fā)的事件是onreadystatechange。當(dāng)XMLHttpRequest的狀態(tài)改變時(shí),將觸發(fā)其onreadystatechange事件。為XMLHttpRequest對(duì)象的onreadystatechange事件指定事件處理函數(shù),該事件處理函數(shù)就可以在XMLHttpRequest狀態(tài)改變時(shí)被觸發(fā),這個(gè)事件處理函數(shù)也稱(chēng)回調(diào)函數(shù)。
(3)XML狀態(tài)改變,且readyState為4時(shí),即表明服務(wù)器的響應(yīng)已經(jīng)完成,此時(shí)可以開(kāi)始處理服務(wù)器響應(yīng)。
(4)通過(guò)JavaScript的事件機(jī)制,使用事件處理函數(shù)監(jiān)聽(tīng)XMLHttpRequest狀態(tài)的改變,當(dāng)XMLHttpRequest的readyState為4,且status為200時(shí),事件處理函數(shù)開(kāi)始處理事件服務(wù)器響應(yīng)。
(5)進(jìn)入事件處理函數(shù)后,XMLHttpRequest依然不可或缺,事件處理函數(shù)必須借助于XMLHttpRequest來(lái)獲取服務(wù)器響應(yīng),調(diào)用responseText方法或者responseXML方法獲取服務(wù)器的響應(yīng)。至此,XMLHttpRequest對(duì)象的運(yùn)行周期結(jié)束。
(6)JavaScript通過(guò)DOM操作將服務(wù)器響應(yīng)動(dòng)態(tài)地加載到XHTML頁(yè)面中。
從發(fā)送HTTP請(qǐng)求,到監(jiān)控服務(wù)器的響應(yīng)狀態(tài),再到獲取服務(wù)器響應(yīng)數(shù)據(jù),XMLHttpRequest對(duì)象一直是Ajax技術(shù)的靈魂。
圖2-11顯示了XMLHttpRequest的運(yùn)行周期。

圖2-11 XMLHttpRequest的運(yùn)行周期
- Unity 2020 Mobile Game Development
- Mastering Articulate Storyline
- Responsive Web Design with HTML5 and CSS3
- Blockly創(chuàng)意趣味編程
- 從學(xué)徒到高手:汽車(chē)電路識(shí)圖、故障檢測(cè)與維修技能全圖解
- Python機(jī)器學(xué)習(xí)經(jīng)典實(shí)例
- 琢石成器:Windows環(huán)境下32位匯編語(yǔ)言程序設(shè)計(jì)
- SQL Server與JSP動(dòng)態(tài)網(wǎng)站開(kāi)發(fā)
- Android玩家必備
- Android項(xiàng)目實(shí)戰(zhàn):手機(jī)安全衛(wèi)士開(kāi)發(fā)案例解析
- Flowable流程引擎實(shí)戰(zhàn)
- Odoo 10 Implementation Cookbook
- Vue.js光速入門(mén)及企業(yè)項(xiàng)目開(kāi)發(fā)實(shí)戰(zhàn)
- HTML5游戲開(kāi)發(fā)實(shí)戰(zhàn)
- Leaflet.js Essentials