讀古今文學網 > 鋒利的jQuery(第2版) > 附錄C Ajax的XMLHttpRequest 對象的屬性和方法 >

附錄C Ajax的XMLHttpRequest 對象的屬性和方法

XMLHttpRequest對象是Ajax的核心,它有許多的屬性、方法和事件以便於腳本處理和控制HTTP的請求與響應。下面是關於XMLHttpRequest對象的一些屬性和方法的介紹。

1.readyState屬性

當一個XMLHttpRequest對像被創建後,readyState屬性標識了當前對像正處於什麼狀態,可以通過對該屬性的訪問,來判斷此次請求的狀態然後做出相應的操作。readyState屬性具體的值代表的意義如表C-1所示。

表C-1 readyState屬性

值說 明0未初始化狀態:此時,已經創建了一個XMLHttpRequest對象,但是還沒有初始化1準備發送狀態:此時,已經調用了XMLHttpRequest對象的open方法,並且XMLHttp Request對像 已經準備好將一個請求發送到服務器端2已發送狀態:此時,已經通過send方法把一個請求發送到服務器端,但是還沒有收到一個響應3正在接收狀態:此時,已經接收到HTTP響應頭部信息,但是消息體部分還沒有完全接收到4完成響應狀態:此時,已經完成了HttpResponse響應的接收
2.responseText屬性

responseText屬性包含客戶端接收到的HTTP響應的文本內容。當readyState屬性值為0、1或2時,responseText屬性包含一個空字符串;當readyState屬性值為3(正在接收)時,響應中包含客戶端還未完成的響應信息;當readyState屬性值為4(已加載)時,該responseText屬性才包含完整的響應信息。

3.responseXML屬性

只有當readyState屬性值為4,並且響應頭部的Content-Type的MIME類型被指定為XML(text/xml或者application/xml)時,該屬性才會有值並且被解析為一個XML文檔,否則該屬性值為null。如果是回傳的XML文檔結構不良或者未完成響應回傳,該屬性值也會為null。由此可見,responseXML屬性用來描述被XMLHttpRequest解析後的XML文檔的屬性。

4.status屬性

status屬性描述了HTTP狀態代碼。注意,僅當readyState屬性值為3(正在接收中)或4(已加載)時,才能對此屬性進行訪問。如果在readyState屬性值小於3時,試圖存取status屬性值,將引發一個異常。

5.statusText屬性

statusText屬性描述了HTTP狀態代碼文本,並且僅當readyState屬性值為3或4時才可用。當readyState屬性為其他值時試圖存取statusText屬性值將引發一個異常。

6.onreadystatechange事件

每當readyState屬性值發生改變時,就會觸發onreadystatechange事件。一般都通過該事件來觸發回傳處理函數。

7.open方法

XMLHttpRequest對象是通過調用open(method, uri, async, username, password)方法來進行初始化工作的。調用該方法將得到一個可以用來進行發送(send方法)的對象。open方法有5個參數。

(1)method參數是必須提供的,用於指定用來發送請求的HTTP方法(GET, POST, PUT, DELETE或HEAD)。按照HTTP規範,該參數要大寫。

(2)uri參數用於指定XMLHttpRequest對像把請求發送到的服務器相應的URI,該地址會被自動解析為絕對地址。

(3)async參數用於指定是否請求是異步的,其默認值為true。如果需要發送一個同步請求,需要把該參數設置為false。

(4)如果需要服務器驗證訪問用戶的情況,那麼可以設置username以及password這兩個參數。

8.send方法

調用open方法後,就可以通過調用send方法按照open方法設定的參數將請求進行發送。當open方法中async參數為true時,在send方法調用後立即返回,否則將會中斷直到請求返回。需要注意的是,send方法必須在readyState屬性值為1時,即調用open方法以後才能調用。在調用send方法以後到接收到響應信息之前,readyState屬性的值將被設為2;一旦接收到響應消息,readyState屬性值將會被設為3;直到響應接收完成,readyState屬性的值才會被設為4。

send方法使用一個可選的參數,該參數可以包含可變類型的數據。用戶可以使用它並通過POST方法把數據發送到服務器。另外,可以顯式地使用null參數調用send方法,這與不用參數調用該方法一樣。對於大多數其他的數據類型,在調用send方法之前,應該使用setRequestHeader方法先設置Content-Type頭部。如果send(data)方法中的data參數的類型為DOMString,那麼,數據將被編碼為UTF-8。如果數據是Document類型,那麼將使用由data.xmlEncoding指定的編碼

串行化該數據。

9.abort方法

該方法可以暫停一個HttpRequest的請求發送或者HttpResponse的接收,並且將XMLHttp Request對像設置為初始化狀態。

10.setRequestHeader方法

該方法用來設置請求的頭部信息。當readyState屬性值為1時,可以在調用open方法後調用這個方法;否則將得到一個異常。setRequestHeader(header, value)方法包含兩個參數:前一個是header鍵名稱,後一個是鍵值。

11.getResponseHeader方法

此方法用於檢索響應的頭部值,僅當readyState屬性值是3或4(即在響應頭部可用以後)時,才可以調用這個方法;否則,該方法返回一個空字符串。此外還可以通過getAllResponse Headers方法獲取所有的HttpResponse的頭部信息。