username 和 password 參數(shù)是可選的,為 url 所需的授權(quán)提供認證資格。如果指定了,它們會覆蓋 url 自己指定的任何資格。
這個方法初始化請求參數(shù)以供 send() 方法稍后使用。它把 readyState 設置為 1,刪除之前指定的所有請求頭部,以及之前接收的所有響應頭部,并且把 responseText、responseXML、status 以及 statusText 參數(shù)設置為它們的默認值。當 readyState 為 0 的時候(當 XMLHttpRequest 對象剛創(chuàng)建或者 abort() 方法調(diào)用后)以及當 readyState 為 4 時(已經(jīng)接收響應時),調(diào)用這個方法是安全的。當針對任何其他狀態(tài)調(diào)用的時候,open() 方法的行為是為指定的。
除了保存供 send() 方法使用的請求參數(shù),以及重置 XMLHttpRequest 對象以便復用,open() 方法沒有其他的行為。要特別注意,當這個方法調(diào)用的時候,實現(xiàn)通常不會打開一個到 Web 服務器的網(wǎng)絡連接。
發(fā)送一個 HTTP 請求
send(body)
如果通過調(diào)用 open() 指定的 HTTP 方法是 POST 或 PUT,body 參數(shù)指定了請求體,作為一個字符串或者 Document 對象。如果請求體不適必須的話,這個參數(shù)就為 null。對于任何其他方法,這個參數(shù)是不可用的,應該為 null(有些實現(xiàn)不允許省略該參數(shù))。
這個方法導致一個 HTTP 請求發(fā)送。如果之前沒有調(diào)用 open(),或者更具體地說,如果 readyState 不是 1,send() 拋出一個異常。否則,它發(fā)送一個 HTTP 請求,該請求由以下幾部分組成:
一旦請求發(fā)布了,send() 把 readyState 設置為 2,并觸發(fā) onreadystatechange 事件句柄。
如果之前調(diào)用的 open() 參數(shù) async 為 false,這個方法會阻塞并不會返回,直到 readyState 為 4 并且服務器的響應被完全接收。否則,如果 async 參數(shù)為 true,或者這個參數(shù)省略了,send() 立即返回,并且正如后面所介紹的,服務器響應將在一個后臺線程中處理。
如果服務器響應帶有一個 HTTP 重定向,send() 方法或后臺線程自動遵從重定向。當所有的 HTTP 響應頭部已經(jīng)接收,send() 或后臺線程把 readyState 設置為 3 并觸發(fā) onreadystatechange 事件句柄。如果響應較長,send() 或后臺線程可能在狀態(tài) 3 中觸發(fā) onreadystatechange 事件句柄:這可以作為一個下載進度指示器。最后,當響應完成,send() 或后臺線程把 readyState 設置為 4,并最后一次觸發(fā)事件句柄。
setRequestHeader(name, value)
name 參數(shù)是要設置的頭部的名稱。這個參數(shù)不應該包括空白、冒號或換行。
value 參數(shù)是頭部的值。這個參數(shù)不應該包括換行。
setRequestHeader() 方法指定了一個 HTTP 請求的頭部,它應該包含在通過后續(xù) send() 調(diào)用而發(fā)布的請求中。這個方法只有當 readyState 為 1 的時候才能調(diào)用,例如,在調(diào)用了 open() 之后,但在調(diào)用 send() 之前。
如果帶有指定名稱的頭部已經(jīng)被指定了,這個頭部的新值就是:之前指定的值,加上逗號、空白以及這個調(diào)用指定的值。
如果 open() 調(diào)用指定了認證資格,XMLHttpRequest 自動發(fā)送一個適當?shù)?Authorization 請求頭部。但是,你可以使用 setRequestHeader() 來添加這個頭部。類似地,如果 Web 服務器已經(jīng)保存了和傳遞給 open() 的 URL 相關(guān)聯(lián)的 cookie,適當?shù)?Cookie 或 Cookie2 頭部也自動地包含到請求中?梢酝ㄟ^調(diào)用 setRequestHeader() 來把這些 cookie 添加到頭部。XMLHttpRequest 也可以為 User-Agent 頭部提供一個默認值。如果它這么做,你為該頭部指定的任何值都會添加到這個默認值后面。
有些請求頭部由 XMLHttpRequest 自動設置而不是由這個方法設置,以符合 HTTP 協(xié)議。這包括如下和代理相關(guān)的頭部:
2015職稱計算機考試書PowerPoint2007中 .. 定價:¥45 優(yōu)惠價:¥42 更多書籍 | |
2015年全國職稱計算機考試教材(2007模 .. 定價:¥225 優(yōu)惠價:¥213 更多書籍 |