這一篇記錄一下關天XMLHttpRequest的幾種方法,所謂看的再多,聽的再多,不如用手一個字一個字的寫一遍記的比較牢固。正應了古人的一句話,好腦子不如爛筆頭,爛筆頭是沒有,一個破博客還是有的。記下來發博客上。

XMLHttpRequest.abort()方法

国产视频app取消當前響應,關閉連接并且結束任何未決的網絡活動。

這個方法把 XMLHttpRequest 對象重置為 readyState 為 0 的狀態,并且取消所有未決的網絡活動。例如,如果請求用了太長時間,而且響應不再必要的時候,可以調用這個方法。

XMLHttpRequest.open()方法

初始化 HTTP 請求參數,例如 URL 和 HTTP 方法,但是并不發送請求。

語法

XMLHttpRequest.open(method,url,async,uesername,password)

method:參數是用于請求的HTTP的方法,包括GET,POST,HEAD

url:參數請求的主體,大多數瀏覽器實施了一個同源的安全規則,并且要求這個URL與包含服本的文本且有相同的主域名與端口

async:參數指示請求使用的應該異步進行,如果這個參數是false,請求的是同步的。后續對 send() 的調用將阻塞,直到響應完全接收。如果這個參數是 true 或省略,請求是異步的,且通常需要一個 onreadystatechange 事件句柄。

username 和 password 參數是可選的,為 url 所需的授權提供認證資格。如果指定了,它們會覆蓋 url 自己指定的任何資格。

說明

国产视频app這個方法初始化請求參數以供 send() 方法稍后使用。它把 readyState 設置為 1,刪除之前指定的所有請求頭部,以及之前接收的所有響應頭部,并且把 responseText、responseXML、status 以及 statusText 參數設置為它們的默認值。當 readyState 為 0 的時候(當 XMLHttpRequest 對象剛創建或者 abort() 方法調用后)以及當 readyState 為 4 時(已經接收響應時),調用這個方法是安全的。當針對任何其他狀態調用的時候,open() 方法的行為是為指定的。

除了保存供 send() 方法使用的請求參數,以及重置 XMLHttpRequest 對象以便復用,open() 方法沒有其他的行為。要特別注意,當這個方法調用的時候,實現通常不會打開一個到 Web 服務器的網絡連接。

XMLHttpRequest.send()

發送 HTTP 請求,使用傳遞給 open() 方法的參數,以及傳遞給該方法的可選請求體。

語法:

send();

如果通過調用 open() 指定的 HTTP 方法是 POST 或 PUT,body 參數指定了請求體,作為一個字符串或者 Document 對象。如果請求體不適必須的話,這個參數就為 null。對于任何其他方法,這個參數是不可用的,應該為 null(有些實現不允許省略該參數)。

說明

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

之前調用 open() 時指定的 HTTP 方法、URL 以及認證資格(如果有的話)。

之前調用 setRequestHeader() 時指定的請求頭部(如果有的話)。

傳遞給這個方法的 body 參數。

国产视频app一旦請求發布了,send() 把 readyState 設置為 2,并觸發 onreadystatechange 事件句柄。

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

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

getAllResponseHeaders()

国产视频app把 HTTP 響應頭部作為未解析的字符串返回。

国产视频app如果 readyState 小于 3,這個方法返回 null。否則,它返回服務器發送的所有 HTTP 響應的頭部。頭部作為單個的字符串返回,一行一個頭部。每行用換行符 "\r\n" 隔開。

XMLHttpRequest.setRequestHeader()

返回指定的 HTTP 響應頭部的值。其參數是要返回的 HTTP 響應頭部的名稱。可以使用任何大小寫來制定這個頭部名字,和響應頭部的比較是不區分大小寫的。

国产视频app該方法的返回值是指定的 HTTP 響應頭部的值,如果沒有接收到這個頭部或者 readyState 小于 3 則為空字符串。如果接收到多個有指定名稱的頭部,這個頭部的值被連接起來并返回,使用逗號和空格分隔開各個頭部的值。

語法

setRequestHeader(name, value)

name 參數是要設置的頭部的名稱。這個參數不應該包括空白、冒號或換行。

value 參數是頭部的值。這個參數不應該包括換行。

說明

国产视频appsetRequestHeader() 方法指定了一個 HTTP 請求的頭部,它應該包含在通過后續 send() 調用而發布的請求中。這個方法只有當 readyState 為 1 的時候才能調用,例如,在調用了 open() 之后,但在調用 send() 之前。

国产视频app如果帶有指定名稱的頭部已經被指定了,這個頭部的新值就是:之前指定的值,加上逗號、空白以及這個調用指定的值。

国产视频app如果 open() 調用指定了認證資格,XMLHttpRequest 自動發送一個適當的 Authorization 請求頭部。但是,你可以使用 setRequestHeader() 來添加這個頭部。類似地,如果 Web 服務器已經保存了和傳遞給 open() 的 URL 相關聯的 cookie,適當的 Cookie 或 Cookie2 頭部也自動地包含到請求中。可以通過調用 setRequestHeader() 來把這些 cookie 添加到頭部。XMLHttpRequest 也可以為 User-Agent 頭部提供一個默認值。如果它這么做,你為該頭部指定的任何值都會添加到這個默認值后面。

国产视频app有些請求頭部由 XMLHttpRequest 自動設置而不是由這個方法設置,以符合 HTTP 協議。這包括如下和代理相關的頭部: