欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

XML DOM - XMLHttpRequest 對(duì)象

XMLHttpRequest 對(duì)象

XMLHttpRequest 對(duì)象提供了對(duì) HTTP 協(xié)議的完全的訪問,包括做出 POST 和 HEAD 請(qǐng)求以及普通的 GET 請(qǐng)求的能力。XMLHttpRequest 可以同步或異步地返回 Web 服務(wù)器的響應(yīng),并且能夠以文本或者一個(gè) DOM 文檔的形式返回內(nèi)容。

盡管名為 XMLHttpRequest,它并不限于和 XML 文檔一起使用:它可以接收任何形式的文本文檔。

XMLHttpRequest 對(duì)象是名為 AJAX 的 Web 應(yīng)用程序架構(gòu)的一項(xiàng)關(guān)鍵功能。

瀏覽器支持

XMLHttpRequest 得到了所有現(xiàn)代瀏覽器較好的支持。唯一的瀏覽器依賴性涉及 XMLHttpRequest 對(duì)象的創(chuàng)建。在 IE 5 和 IE 6 中,必須使用特定于 IE 的 ActiveXObject() 構(gòu)造函數(shù)。正如在 XMLHttpRequest 對(duì)象 這一節(jié)所介紹的。

W3C 標(biāo)準(zhǔn)化

XMLHttpRequest 對(duì)象還沒有標(biāo)準(zhǔn)化,但是 W3C 已經(jīng)開始了標(biāo)準(zhǔn)化的工作,本手冊(cè)介紹的內(nèi)容都是基于標(biāo)準(zhǔn)化的工作草案。

當(dāng)前的 XMLHttpRequest 實(shí)現(xiàn)已經(jīng)相當(dāng)一致。但是和標(biāo)準(zhǔn)有細(xì)微的不同。例如,一個(gè)實(shí)現(xiàn)可能返回 null,而標(biāo)準(zhǔn)要求是空字符串,或者實(shí)現(xiàn)可能把 readyState 設(shè)置為 3 而不保證所有的響應(yīng)頭部都可用。

屬性

readyState

HTTP 請(qǐng)求的狀態(tài).當(dāng)一個(gè) XMLHttpRequest 初次創(chuàng)建時(shí),這個(gè)屬性的值從 0 開始,直到接收到完整的 HTTP 響應(yīng),這個(gè)值增加到 4。

5 個(gè)狀態(tài)中每一個(gè)都有一個(gè)相關(guān)聯(lián)的非正式的名稱,下表列出了狀態(tài)、名稱和含義:

狀態(tài) 名稱 描述
0 Uninitialized 初始化狀態(tài)。XMLHttpRequest 對(duì)象已創(chuàng)建或已被 abort() 方法重置。
1 Open open() 方法已調(diào)用,但是 send() 方法未調(diào)用。請(qǐng)求還沒有被發(fā)送。
2 Sent Send() 方法已調(diào)用,HTTP 請(qǐng)求已發(fā)送到 Web 服務(wù)器。未接收到響應(yīng)。
3 Receiving 所有響應(yīng)頭部都已經(jīng)接收到。響應(yīng)體開始接收但未完成。
4 Loaded HTTP 響應(yīng)已經(jīng)完全接收。

readyState 的值不會(huì)遞減,除非當(dāng)一個(gè)請(qǐng)求在處理過程中的時(shí)候調(diào)用了 abort() 或 open() 方法。每次這個(gè)屬性的值增加的時(shí)候,都會(huì)觸發(fā) onreadystatechange 事件句柄。

responseText

目前為止為服務(wù)器接收到的響應(yīng)體(不包括頭部),或者如果還沒有接收到數(shù)據(jù)的話,就是空字符串。

如果 readyState 小于 3,這個(gè)屬性就是一個(gè)空字符串。當(dāng) readyState 為 3,這個(gè)屬性返回目前已經(jīng)接收的響應(yīng)部分。如果 readyState 為 4,這個(gè)屬性保存了完整的響應(yīng)體。

如果響應(yīng)包含了為響應(yīng)體指定字符編碼的頭部,就使用該編碼。否則,假定使用 Unicode UTF-8。

responseXML

對(duì)請(qǐng)求的響應(yīng),解析為 XML 并作為 Document 對(duì)象返回。

status

由服務(wù)器返回的 HTTP 狀態(tài)代碼,如 200 表示成功,而 404 表示 "Not Found" 錯(cuò)誤。當(dāng) readyState 小于 3 的時(shí)候讀取這一屬性會(huì)導(dǎo)致一個(gè)異常。

statusText

這個(gè)屬性用名稱而不是數(shù)字指定了請(qǐng)求的 HTTP 的狀態(tài)代碼。也就是說,當(dāng)狀態(tài)為 200 的時(shí)候它是 "OK",當(dāng)狀態(tài)為 404 的時(shí)候它是 "Not Found"。和 status 屬性一樣,當(dāng) readyState 小于 3 的時(shí)候讀取這一屬性會(huì)導(dǎo)致一個(gè)異常。

事件句柄

onreadystatechange

每次 readyState 屬性改變的時(shí)候調(diào)用的事件句柄函數(shù)。當(dāng) readyState 為 3 時(shí),它也可能調(diào)用多次。

方法

abort()

取消當(dāng)前響應(yīng),關(guān)閉連接并且結(jié)束任何未決的網(wǎng)絡(luò)活動(dòng)。

這個(gè)方法把 XMLHttpRequest 對(duì)象重置為 readyState 為 0 的狀態(tài),并且取消所有未決的網(wǎng)絡(luò)活動(dòng)。例如,如果請(qǐng)求用了太長時(shí)間,而且響應(yīng)不再必要的時(shí)候,可以調(diào)用這個(gè)方法。

getAllResponseHeaders()

把 HTTP 響應(yīng)頭部作為未解析的字符串返回。

如果 readyState 小于 3,這個(gè)方法返回 null。否則,它返回服務(wù)器發(fā)送的所有 HTTP 響應(yīng)的頭部。頭部作為單個(gè)的字符串返回,一行一個(gè)頭部。每行用換行符 "\r\n" 隔開。

getResponseHeader()

返回指定的 HTTP 響應(yīng)頭部的值。其參數(shù)是要返回的 HTTP 響應(yīng)頭部的名稱?梢允褂萌魏未笮憗碇贫ㄟ@個(gè)頭部名字,和響應(yīng)頭部的比較是不區(qū)分大小寫的。

該方法的返回值是指定的 HTTP 響應(yīng)頭部的值,如果沒有接收到這個(gè)頭部或者 readyState 小于 3 則為空字符串。如果接收到多個(gè)有指定名稱的頭部,這個(gè)頭部的值被連接起來并返回,使用逗號(hào)和空格分隔開各個(gè)頭部的值。

open()

初始化 HTTP 請(qǐng)求參數(shù),例如 URL 和 HTTP 方法,但是并不發(fā)送請(qǐng)求。

send()

發(fā)送 HTTP 請(qǐng)求,使用傳遞給 open() 方法的參數(shù),以及傳遞給該方法的可選請(qǐng)求體。

setRequestHeader()

向一個(gè)打開但未發(fā)送的請(qǐng)求設(shè)置或添加一個(gè) HTTP 請(qǐng)求。

XMLHttpRequest.open()

初始化 HTTP 請(qǐng)求參數(shù)

語法

open(method, url, async, username, password)

method 參數(shù)是用于請(qǐng)求的 HTTP 方法。值包括 GET、POST 和 HEAD。

url 參數(shù)是請(qǐng)求的主體。大多數(shù)瀏覽器實(shí)施了一個(gè)同源安全策略,并且要求這個(gè) URL 與包含腳本的文本具有相同的主機(jī)名和端口。

async 參數(shù)指示請(qǐng)求使用應(yīng)該異步地執(zhí)行。如果這個(gè)參數(shù)是 false,請(qǐng)求是同步的,后續(xù)對(duì) send() 的調(diào)用將阻塞,直到響應(yīng)完全接收。如果這個(gè)參數(shù)是 true 或省略,請(qǐng)求是異步的,且通常需要一個(gè) onreadystatechange 事件句柄。

username 和 password 參數(shù)是可選的,為 url 所需的授權(quán)提供認(rèn)證資格。如果指定了,它們會(huì)覆蓋 url 自己指定的任何資格。

說明

這個(gè)方法初始化請(qǐng)求參數(shù)以供 send() 方法稍后使用。它把 readyState 設(shè)置為 1,刪除之前指定的所有請(qǐng)求頭部,以及之前接收的所有響應(yīng)頭部,并且把 responseText、responseXML、status 以及 statusText 參數(shù)設(shè)置為它們的默認(rèn)值。當(dāng) readyState 為 0 的時(shí)候(當(dāng) XMLHttpRequest 對(duì)象剛創(chuàng)建或者 abort() 方法調(diào)用后)以及當(dāng) readyState 為 4 時(shí)(已經(jīng)接收響應(yīng)時(shí)),調(diào)用這個(gè)方法是安全的。當(dāng)針對(duì)任何其他狀態(tài)調(diào)用的時(shí)候,open() 方法的行為是為指定的。

除了保存供 send() 方法使用的請(qǐng)求參數(shù),以及重置 XMLHttpRequest 對(duì)象以便復(fù)用,open() 方法沒有其他的行為。要特別注意,當(dāng)這個(gè)方法調(diào)用的時(shí)候,實(shí)現(xiàn)通常不會(huì)打開一個(gè)到 Web 服務(wù)器的網(wǎng)絡(luò)連接。

XMLHttpRequest.send()

發(fā)送一個(gè) HTTP 請(qǐng)求

語法

send(body)

如果通過調(diào)用 open() 指定的 HTTP 方法是 POST 或 PUT,body 參數(shù)指定了請(qǐng)求體,作為一個(gè)字符串或者 Document 對(duì)象。如果請(qǐng)求體不適必須的話,這個(gè)參數(shù)就為 null。對(duì)于任何其他方法,這個(gè)參數(shù)是不可用的,應(yīng)該為 null(有些實(shí)現(xiàn)不允許省略該參數(shù))。

說明

這個(gè)方法導(dǎo)致一個(gè) HTTP 請(qǐng)求發(fā)送。如果之前沒有調(diào)用 open(),或者更具體地說,如果 readyState 不是 1,send() 拋出一個(gè)異常。否則,它發(fā)送一個(gè) HTTP 請(qǐng)求,該請(qǐng)求由以下幾部分組成:

  • 之前調(diào)用 open() 時(shí)指定的 HTTP 方法、URL 以及認(rèn)證資格(如果有的話)。
  • 之前調(diào)用 setRequestHeader() 時(shí)指定的請(qǐng)求頭部(如果有的話)。
  • 傳遞給這個(gè)方法的 body 參數(shù)。

一旦請(qǐng)求發(fā)布了,send() 把 readyState 設(shè)置為 2,并觸發(fā) onreadystatechange 事件句柄。

如果之前調(diào)用的 open() 參數(shù) async 為 false,這個(gè)方法會(huì)阻塞并不會(huì)返回,直到 readyState 為 4 并且服務(wù)器的響應(yīng)被完全接收。否則,如果 async 參數(shù)為 true,或者這個(gè)參數(shù)省略了,send() 立即返回,并且正如后面所介紹的,服務(wù)器響應(yīng)將在一個(gè)后臺(tái)線程中處理。

如果服務(wù)器響應(yīng)帶有一個(gè) HTTP 重定向,send() 方法或后臺(tái)線程自動(dòng)遵從重定向。當(dāng)所有的 HTTP 響應(yīng)頭部已經(jīng)接收,send() 或后臺(tái)線程把 readyState 設(shè)置為 3 并觸發(fā) onreadystatechange 事件句柄。如果響應(yīng)較長,send() 或后臺(tái)線程可能在狀態(tài) 3 中觸發(fā) onreadystatechange 事件句柄:這可以作為一個(gè)下載進(jìn)度指示器。最后,當(dāng)響應(yīng)完成,send() 或后臺(tái)線程把 readyState 設(shè)置為 4,并最后一次觸發(fā)事件句柄。

XMLHttpRequest.setRequestHeader()

語法

setRequestHeader(name, value)

name 參數(shù)是要設(shè)置的頭部的名稱。這個(gè)參數(shù)不應(yīng)該包括空白、冒號(hào)或換行。

value 參數(shù)是頭部的值。這個(gè)參數(shù)不應(yīng)該包括換行。

說明

setRequestHeader() 方法指定了一個(gè) HTTP 請(qǐng)求的頭部,它應(yīng)該包含在通過后續(xù) send() 調(diào)用而發(fā)布的請(qǐng)求中。這個(gè)方法只有當(dāng) readyState 為 1 的時(shí)候才能調(diào)用,例如,在調(diào)用了 open() 之后,但在調(diào)用 send() 之前。

如果帶有指定名稱的頭部已經(jīng)被指定了,這個(gè)頭部的新值就是:之前指定的值,加上逗號(hào)、空白以及這個(gè)調(diào)用指定的值。

如果 open() 調(diào)用指定了認(rèn)證資格,XMLHttpRequest 自動(dòng)發(fā)送一個(gè)適當(dāng)?shù)?Authorization 請(qǐng)求頭部。但是,你可以使用 setRequestHeader() 來添加這個(gè)頭部。類似地,如果 Web 服務(wù)器已經(jīng)保存了和傳遞給 open() 的 URL 相關(guān)聯(lián)的 cookie,適當(dāng)?shù)?Cookie 或 Cookie2 頭部也自動(dòng)地包含到請(qǐng)求中。可以通過調(diào)用 setRequestHeader() 來把這些 cookie 添加到頭部。XMLHttpRequest 也可以為 User-Agent 頭部提供一個(gè)默認(rèn)值。如果它這么做,你為該頭部指定的任何值都會(huì)添加到這個(gè)默認(rèn)值后面。

有些請(qǐng)求頭部由 XMLHttpRequest 自動(dòng)設(shè)置而不是由這個(gè)方法設(shè)置,以符合 HTTP 協(xié)議。這包括如下和代理相關(guān)的頭部:

  • Host
  • Connection
  • Keep-Alive
  • Accept-charset
  • Accept-Encoding
  • If-Modified-Since
  • If-None-Match
  • If-Range
  • Range