XMLHttpRequest 對象提供了對 HTTP 協(xié)議的完全的訪問,包括做出 POST 和 HEAD 請求以及普通的 GET 請求的能力。XMLHttpRequest 可以同步或異步地返回 Web 服務(wù)器的響應(yīng),并且能夠以文本或者一個 DOM 文檔的形式返回內(nèi)容。
盡管名為 XMLHttpRequest,它并不限于和 XML 文檔一起使用:它可以接收任何形式的文本文檔。
XMLHttpRequest 對象是名為 AJAX 的 Web 應(yīng)用程序架構(gòu)的一項關(guān)鍵功能。
XMLHttpRequest 得到了所有現(xiàn)代瀏覽器較好的支持。唯一的瀏覽器依賴性涉及 XMLHttpRequest 對象的創(chuàng)建。在 IE 5 和 IE 6 中,必須使用特定于 IE 的 ActiveXObject() 構(gòu)造函數(shù)。正如在 XMLHttpRequest 對象 這一節(jié)所介紹的。
XMLHttpRequest 對象還沒有標(biāo)準(zhǔn)化,但是 W3C 已經(jīng)開始了標(biāo)準(zhǔn)化的工作,本手冊介紹的內(nèi)容都是基于標(biāo)準(zhǔn)化的工作草案。
當(dāng)前的 XMLHttpRequest 實現(xiàn)已經(jīng)相當(dāng)一致。但是和標(biāo)準(zhǔn)有細(xì)微的不同。例如,一個實現(xiàn)可能返回 null,而標(biāo)準(zhǔn)要求是空字符串,或者實現(xiàn)可能把 readyState 設(shè)置為 3 而不保證所有的響應(yīng)頭部都可用。
HTTP 請求的狀態(tài).當(dāng)一個 XMLHttpRequest 初次創(chuàng)建時,這個屬性的值從 0 開始,直到接收到完整的 HTTP 響應(yīng),這個值增加到 4。
5 個狀態(tài)中每一個都有一個相關(guān)聯(lián)的非正式的名稱,下表列出了狀態(tài)、名稱和含義:
狀態(tài) | 名稱 | 描述 |
---|---|---|
0 | Uninitialized | 初始化狀態(tài)。XMLHttpRequest 對象已創(chuàng)建或已被 abort() 方法重置。 |
1 | Open | open() 方法已調(diào)用,但是 send() 方法未調(diào)用。請求還沒有被發(fā)送。 |
2 | Sent | Send() 方法已調(diào)用,HTTP 請求已發(fā)送到 Web 服務(wù)器。未接收到響應(yīng)。 |
3 | Receiving | 所有響應(yīng)頭部都已經(jīng)接收到。響應(yīng)體開始接收但未完成。 |
4 | Loaded | HTTP 響應(yīng)已經(jīng)完全接收。 |
readyState 的值不會遞減,除非當(dāng)一個請求在處理過程中的時候調(diào)用了 abort() 或 open() 方法。每次這個屬性的值增加的時候,都會觸發(fā) onreadystatechange 事件句柄。
目前為止為服務(wù)器接收到的響應(yīng)體(不包括頭部),或者如果還沒有接收到數(shù)據(jù)的話,就是空字符串。
如果 readyState 小于 3,這個屬性就是一個空字符串。當(dāng) readyState 為 3,這個屬性返回目前已經(jīng)接收的響應(yīng)部分。如果 readyState 為 4,這個屬性保存了完整的響應(yīng)體。
如果響應(yīng)包含了為響應(yīng)體指定字符編碼的頭部,就使用該編碼。否則,假定使用 Unicode UTF-8。
對請求的響應(yīng),解析為 XML 并作為 Document 對象返回。
由服務(wù)器返回的 HTTP 狀態(tài)代碼,如 200 表示成功,而 404 表示 "Not Found" 錯誤。當(dāng) readyState 小于 3 的時候讀取這一屬性會導(dǎo)致一個異常。
這個屬性用名稱而不是數(shù)字指定了請求的 HTTP 的狀態(tài)代碼。也就是說,當(dāng)狀態(tài)為 200 的時候它是 "OK",當(dāng)狀態(tài)為 404 的時候它是 "Not Found"。和 status 屬性一樣,當(dāng) readyState 小于 3 的時候讀取這一屬性會導(dǎo)致一個異常。
每次 readyState 屬性改變的時候調(diào)用的事件句柄函數(shù)。當(dāng) readyState 為 3 時,它也可能調(diào)用多次。
取消當(dāng)前響應(yīng),關(guān)閉連接并且結(jié)束任何未決的網(wǎng)絡(luò)活動。
這個方法把 XMLHttpRequest 對象重置為 readyState 為 0 的狀態(tài),并且取消所有未決的網(wǎng)絡(luò)活動。例如,如果請求用了太長時間,而且響應(yīng)不再必要的時候,可以調(diào)用這個方法。
把 HTTP 響應(yīng)頭部作為未解析的字符串返回。
如果 readyState 小于 3,這個方法返回 null。否則,它返回服務(wù)器發(fā)送的所有 HTTP 響應(yīng)的頭部。頭部作為單個的字符串返回,一行一個頭部。每行用換行符 "\r\n" 隔開。
返回指定的 HTTP 響應(yīng)頭部的值。其參數(shù)是要返回的 HTTP 響應(yīng)頭部的名稱?梢允褂萌魏未笮憗碇贫ㄟ@個頭部名字,和響應(yīng)頭部的比較是不區(qū)分大小寫的。
該方法的返回值是指定的 HTTP 響應(yīng)頭部的值,如果沒有接收到這個頭部或者 readyState 小于 3 則為空字符串。如果接收到多個有指定名稱的頭部,這個頭部的值被連接起來并返回,使用逗號和空格分隔開各個頭部的值。
初始化 HTTP 請求參數(shù),例如 URL 和 HTTP 方法,但是并不發(fā)送請求。
發(fā)送 HTTP 請求,使用傳遞給 open() 方法的參數(shù),以及傳遞給該方法的可選請求體。
向一個打開但未發(fā)送的請求設(shè)置或添加一個 HTTP 請求。
初始化 HTTP 請求參數(shù)
open(method, url, async, username, password)
method 參數(shù)是用于請求的 HTTP 方法。值包括 GET、POST 和 HEAD。
url 參數(shù)是請求的主體。大多數(shù)瀏覽器實施了一個同源安全策略,并且要求這個 URL 與包含腳本的文本具有相同的主機(jī)名和端口。
async 參數(shù)指示請求使用應(yīng)該異步地執(zhí)行。如果這個參數(shù)是 false,請求是同步的,后續(xù)對 send() 的調(diào)用將阻塞,直到響應(yīng)完全接收。如果這個參數(shù)是 true 或省略,請求是異步的,且通常需要一個 onreadystatechange 事件句柄。
![]() | ![]() .. 定價:¥45 優(yōu)惠價:¥42 更多書籍 |
![]() | ![]() .. 定價:¥225 優(yōu)惠價:¥213 更多書籍 |