XMLHttpRequest對象暴露各種屬性、方法和事件以便于腳本處理和控制HTTP請求與響應。下面,我們將對此展開(kāi)詳細的討論。
readyState屬性
當XMLHttpRequest對象把一個(gè)HTTP請求發(fā)送到服務(wù)器時(shí)將經(jīng)歷若干種狀態(tài):一直等待直到請求被處理;然后,它才接收一個(gè)響應。這樣以來(lái),腳本才正確響應各種狀態(tài)-XMLHttpRequest對象暴露一個(gè)描述對象的當前狀態(tài)的readyState屬性,如表格1所示。
表格1.XMLHttpRequest對象的ReadyState屬性值列表。
| ReadyState取值 | 描述 |
| 0 | 描述一種"未初始化"狀態(tài);此時(shí),已經(jīng)創(chuàng )建一個(gè)XMLHttpRequest對象,但是還沒(méi)有初始化。 |
| 1 | 描述一種"發(fā)送"狀態(tài);此時(shí),代碼已經(jīng)調用了XMLHttpRequest open()方法并且XMLHttpRequest已經(jīng)準備好把一個(gè)請求發(fā)送到服務(wù)器。 |
| 2 | 描述一種"發(fā)送"狀態(tài);此時(shí),已經(jīng)通過(guò)send()方法把一個(gè)請求發(fā)送到服務(wù)器端,但是還沒(méi)有收到一個(gè)響應。 |
| 3 | 描述一種"正在接收"狀態(tài);此時(shí),已經(jīng)接收到HTTP響應頭部信息,但是消息體部分還沒(méi)有完全接收結束。 |
| 4 | 描述一種"已加載"狀態(tài);此時(shí),響應已經(jīng)被完全接收。 |
onreadystatechange事件
無(wú)論readyState值何時(shí)發(fā)生改變,XMLHttpRequest對象都會(huì )激發(fā)一個(gè)readystatechange事件。其中,onreadystatechange屬性接收一個(gè)EventListener值-向該方法指示無(wú)論readyState值何時(shí)發(fā)生改變,該對象都將激活。
responseText屬性
這個(gè)responseText屬性包含客戶(hù)端接收到的HTTP響應的文本內容。當readyState值為0、1或2時(shí),responseText包含一個(gè)空字符串。當readyState值為3(正在接收)時(shí),響應中包含客戶(hù)端還未完成的響應信息。當readyState為4(已加載)時(shí),該responseText包含完整的響應信息。
responseXML屬性
此responseXML屬性用于當接收到完整的HTTP響應時(shí)(readyState為4)描述XML響應;此時(shí),Content-Type頭部指定MIME(媒體)類(lèi)型為text/xml,application/xml或以+xml結尾。如果Content-Type頭部并不包含這些媒體類(lèi)型之一,那么responseXML的值為null。無(wú)論何時(shí),只要readyState值不為4,那么該responseXML的值也為null。
其實(shí),這個(gè)responseXML屬性值是一個(gè)文檔接口類(lèi)型的對象,用來(lái)描述被分析的文檔。如果文檔不能被分析(例如,如果文檔不是良構的或不支持文檔相應的字符編碼),那么responseXML的值將為null。
status屬性
這個(gè)status屬性描述了HTTP狀態(tài)代碼,而且其類(lèi)型為short。而且,僅當readyState值為3(正在接收中)或4(已加載)時(shí),這個(gè)status屬性才可用。當readyState的值小于3時(shí)試圖存取status的值將引發(fā)一個(gè)異常。
statusText屬性
這個(gè)statusText屬性描述了HTTP狀態(tài)代碼文本;并且僅當readyState值為3或4才可用。當readyState為其它值時(shí)試圖存取statusText屬性將引發(fā)一個(gè)異常。