AJAX出現(xiàn)的背景:
使Web應用程序有桌面應用程序所具有的特征,實現(xiàn)較強的交互性。
AJAX技術(shù)的特點:
異步性,它不會打斷用戶當前的操作,用戶不需要等待服務器的響應,就可以繼續(xù)瀏覽網(wǎng)頁以及輸入數(shù)據(jù)。
AJAX技術(shù)的核心:
XMLHttpRequest對象,其創(chuàng)建的方法如下:
var xmlHttp = new XMLHttpRequest()
需要注意的是,任何JavaScript對象都要考慮不同瀏覽器之間的兼容性。XMLHttpRequest對象也不例外,因此對于使用特殊處理器處理XML的瀏覽器,比如IE瀏覽器,就需要在代碼中做特殊判斷。
XMLHttpRequest對象在Web程序中的用途:
XMLHttpRequest對象在Web中主要負責兩個方面的工作:(1)一方面是向服務器發(fā)出請求。(2)另一方面是從服務器端得到和處理響應。
向服務器端發(fā)送請求代碼的基本步驟:
xmlHttp.open("GET", url, true);???????????????????? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? ? #連接一個服務器
xmlHttp.onreadystatechange = updatepage;??????????????????????????????????????????????? #構(gòu)建一個回調(diào)函數(shù)
xmlHttp.send(null);???????????????????????????????????????????????????????????????????????????????????????? # 向服務器發(fā)送數(shù)據(jù)
XMLHttpRequest詳解:
1.XMLHttpRequest對象的屬性
(1)readyState:XMLHttpRequest把一個http請求發(fā)送給服務器端后的狀態(tài)值
0:未初始化狀態(tài),已經(jīng)創(chuàng)建了一個XMLHttpRequest對象,但是還未進行初始化
1:描述一種“發(fā)送”狀態(tài),代碼已經(jīng)調(diào)用了XMLHttpRequest open()方法并已經(jīng)準備好把一個請求發(fā)送到服務器
2:描述一種“發(fā)送狀態(tài)”,此時,已經(jīng)通過send()方法把一個請求發(fā)送到服務器端,但是還未收到一個響應
3:描述一種“正在接收”的狀態(tài),已經(jīng)收到http響應頭部信息,但消息體還沒有完全接收結(jié)束
4:描述一種“已加載”狀態(tài),此時響應已經(jīng)被完全接收
(2)onreadystatechange事件:無論readyState何時發(fā)生改變,都會激發(fā)一個onreadystatechange事件。
(3)responseText屬性:只有當readyState為4時,才包含完整的響應信息,否則responseText為空。
(4)status屬性:描述HTTP的狀態(tài)碼,只有當readyState為3或4時才可用,當readyState小于3時調(diào)用會報錯。
(5)statusText:描述HTTP狀態(tài)代碼文本。
2.XMLHttpRequest對象的方法
(1)abort()方法:暫停一個XMLHttpRequest對象和服務器的連接,將其恢復到初始化狀態(tài)。
(2)open()方法:初始化一個XMLHttpRequest對象,并將對象的responseText,responseXML,status和stausText屬性恢復為它們的初始值狀態(tài)。
(3)send()方法:通過調(diào)用open()方法準備好一個請求之后,需要把該請求發(fā)送到服務器,當readyState值為1時,才可調(diào)用send()方法。
(4)setRequestHeader()方法:用于設置請求的頭部信息。
(5)getResponseHeader()方法:用于檢索響應的頭部值。
(6)getAllResponseHeader()方法:以一個字符串形式返回所有的響應頭部。
在XMLHttpRequest對象中,最為核心的兩個屬性是status和onreadystatechange,最為核心的兩個方法為open和send。