XMLHttpRequest物件簡介

2021-08-27 06:44:17 字數 3724 閱讀 7584

1.xmlhttprequest的定義

2.xmlhttprequest的建立

3.屬性

http 請求的狀態.當乙個 xmlhttprequest 初次建立時,這個屬性的值從 0 開始,直到接收到完整的 http 響應,這個值增加到 4。

狀態名稱描述

0uninitialized

初始化狀態。xmlhttprequest 物件已建立或已被 abort() 方法重置。

1open

open() 方法已呼叫,但是 send() 方法未呼叫。請求還沒有被傳送。

2send

send() 方法已呼叫,http 請求已傳送到 web 伺服器。未接收到響應。

3receiving

所有響應頭部都已經接收到。響應體開始接收但未完成。

4loaded

http 響應已經完全接收。

readystate 的值不會遞減,除非當乙個請求在處理過程中的時候呼叫了 abort() 或 open() 方法。每次這個屬性的值增加的時候,都會觸發 onreadystatechange 事件控制代碼。目前為止從伺服器接收到的響應體(不包括頭部),或者如果還沒有接收到資料的話,就是空字串。

如果 readystate 小於 3,這個屬性就是乙個空字串。當 readystate 為 3,這個屬性返回目前已經接收的響應部分。如果 readystate 為 4,這個屬性儲存了完整的響應體。

如果響應包含了為響應體指定

字元編碼

的頭部,就使用該編碼。否則,假定使用 unicode utf-8。對請求的響應,解析為 xml 並作為 document 物件返回。由伺服器返回的 http 

狀態**

,如 200 表示成功,而 404 表示 "not found" 錯誤。當 readystate 小於 3 的時候讀取這一屬性會導致乙個異常。這個屬性用名稱而不是數字指定了請求的 http 的

狀態**

。也就是說,當狀態為 200 的時候它是 "ok",當狀態為 404 的時候它是 "not found"。和 status 屬性一樣,當 readystate 小於 3 的時候讀取這一屬性會導致乙個異常。onreadystatechange:每次 readystate 屬性改變的時候呼叫的事件控制代碼函式。當 readystate 為 3 時,它也可能呼叫多次。取消當前響應,關閉連線並且結束任何未決的網路活動。

這個方法把 xmlhttprequest 物件重置為 readystate 為 0 的狀態,並且取消所有未決的網路活動。例如,如果請求用了太長時間,而且響應不再必要的時候,可以呼叫這個方法。把 http 響應頭部作為未解析的字串返回。

如果 readystate 小於 3,這個方法返回 null。否則,它返回伺服器傳送的所有 http 響應的頭部。頭部作為單個的字串返回,一行乙個頭部。每行用換行符 "\r\n" 隔開。返回指定的 http 響應頭部的值。其引數是要返回的 http 響應頭部的名稱。可以使用任何大小寫來制定這個頭部名字,和響應頭部的比較是不區分大小寫的。

該方法的返回值是指定的 http 響應頭部的值,如果沒有接收到這個頭部或者 readystate 小於 3 則為空字串。如果接收到多個有指定名稱的頭部,這個頭部的值被連線起來並返回,使用逗號和空格分隔開各個頭部的值。初始化 http 請求引數,例如 url 和 http 方法,但是並不傳送請求。傳送 http 請求,使用傳遞給 open() 方法的引數,以及傳遞給該方法的可選請求體。向乙個開啟但未傳送的請求設定或新增乙個 http 請求。初始化 http 請求引數open(method, url, async, username, password)method 引數是用於請求的 http 方法。值包括 get、post 和 head。

url 引數是請求的主體。大多數

瀏覽器實施了乙個同源安全策略,並且要求這個 url 與包含

指令碼的文字具有相同的

主機名和埠。

async 引數指示請求使用應該非同步地執行。如果這個引數是 false,請求是同步的,後續對 send() 的呼叫將阻塞,直到響應完全接收。如果這個引數是 true 或省略,請求是非同步的,且通常需要乙個 onreadystatechange 事件控制代碼。

username 和 password 引數是可選的,為 url 所需的授權提供認證資格。如果指定了,它們會覆蓋 url 自己指定的任何資格。這個方法初始化請求引數以供 send() 方法稍後使用。它把 readystate 設定為 1,刪除之前指定的所有請求頭部,以及之前接收的所有響應頭部,並且把 responsetext、respon***ml、status 以及 

statustext

引數設定為它們的預設值。當 readystate 為 0 的時候(當 xmlhttprequest 物件剛建立或者 abort() 方法呼叫後)以及當 readystate 為 4 時(已經接收響應時),呼叫這個方法是安全的。當針對任何其他狀態呼叫的時候,open() 方法的行為是為指定的。

除了儲存供 send() 方法使用的請求引數,以及重置 xmlhttprequest 物件以便復用,open() 方法沒有其他的行為。要特別注意,當這個方法呼叫的時候,實現通常不會開啟乙個到 web 伺服器的網路連線。傳送乙個 http 請求send(body)如果通過呼叫 open() 指定的 http 方法是 post 或 get,body 引數指定了請求體,作為乙個字串或者 document 物件。如果請求體不是必須的話,這個引數就為 null。對於任何其他方法,這個引數是不可用的,應該為 null(有些實現不允許省略該引數)。這個方法導致乙個 http 請求傳送。如果之前沒有呼叫 open(),或者更具體地說,如果 readystate 不是 1,send() 丟擲乙個異常。否則,它傳送乙個 http 請求,該請求由以下幾部分組成:

之前呼叫 open() 時指定的 http 方法、url 以及認證資格(如果有的話)。 之前呼叫 setrequestheader() 時指定的請求頭部(如果有的話)。 傳遞給這個方法的 body 引數。 一旦請求發布了,send() 把 readystate 設定為 2,並觸發 onreadystatechange 事件控制代碼。

如果之前呼叫的 open() 引數 async 為 false,這個方法會阻塞並不會返回,直到 readystate 為 4 並且伺服器的響應被完全接收。否則,如果 async 引數為 true,或者這個引數省略了,send() 立即返回,並且正如後面所介紹的,伺服器響應將在乙個後台執行緒中處理。setrequestheader(name, value)name 引數是要設定的頭部的名稱。這個引數不應該包括空格、冒號或換行。

value 引數是頭部的值。這個引數不應該包括換行。setrequestheader() 方法指定了乙個 http 請求的頭部,它應該包含在通過後續 send() 呼叫而發布的請求中。這個方法只有當 readystate 為 1 的時候才能呼叫,例如,在呼叫了 open() 之後,呼叫 send() 之前。

如果帶有指定名稱的頭部已經被指定了,這個頭部的新值就是:之前指定的值,加上逗號、空格以及這個呼叫指定的值。

如果 open() 呼叫指定了認證資格,xmlhttprequest 自動傳送乙個適當的 authorization 請求頭部。但是,你可以使用 setrequestheader() 來新增這個頭部。類似地,如果 web 伺服器已經儲存了和傳遞給 open() 的 url 相關聯的 cookie,適當的 cookie 或 cookie2 頭部也自動地包含到請求中。可以通過呼叫 setrequestheader() 來把這些 cookie 新增到頭部。xmlhttprequest 也可以為 user-agent 頭部提供乙個預設值。如果它這麼做,你為該頭部指定的任何值都會新增到這個預設值後面。

標準的建立XMLHttpRequest物件的方法

我們先來看看xmlhttprequest這個物件的屬性。它的屬性有 onreadystatechange 每次狀態改變所觸發事件的事件處理程式。responsetext 從伺服器程序返回資料的字串形式。respon ml 從伺服器程序返回的dom相容的文件資料物件。status 從伺服器返回的數字 ...

XMLHttpRequest 物件詳解

http 請求的狀態.當乙個 xmlhttprequest 初次建立時,這個屬性的值從 0 開始,直到接收到完整的 http 響應,這個值增加到 4。狀態名稱描述0 uninitialized 初始化狀態。xmlhttprequest 物件已建立或已被 abort 方法重置。1open open 方...

Ajax核心 XMLHttpRequest物件

xmlhttprequest 物件是ajax功能的核心,學習xmlhttprequest物件就先從建立xmlhttprequest 物件開始,了解在不同的瀏覽器中建立xmlhttprequest 物件使用不同的方法 以前只是聽說有些瀏覽器不太支援ajax,後來瀏覽器逐漸的相容了這個瀏覽器,現在來看明...