XMLHttpRequest
Baseline Widely available *
This feature is well established and works across many devices and browser versions. It’s been available across browsers since July 2015.
* Some parts of this feature may have varying levels of support.
備註: 此功能可在 Web Worker(不包括 Service Worker)中使用。
XMLHttpRequest
(XHR)物件用於與伺服器互動。你可以從 URL 擷取資料,而無需重新整理整個頁面。這使得網頁能夠只更新頁面的一部分,而不會干擾使用者正在進行的操作。
儘管其名稱如此,XMLHttpRequest
可用於擷取任何類型的資料,而不僅僅是 XML。
如果你的通訊需求涉及從伺服器接收事件資料或訊息資料,請考慮透過 EventSource
介面使用伺服器發送事件。對於全雙工通訊,WebSocket 可能是更好的選擇。
建構子
XMLHttpRequest()
-
此建構子會初始化一個
XMLHttpRequest
。它必須在任何其他方法呼叫之前被呼叫。
實體屬性
此介面也繼承了 XMLHttpRequestEventTarget
和 EventTarget
的屬性。
XMLHttpRequest.readyState
Read only-
回傳一個數字,表示請求的狀態。
XMLHttpRequest.response
Read only-
回傳一個
ArrayBuffer
、Blob
、Document
、JavaScript 物件或字串,其類型取決於XMLHttpRequest.responseType
的值,其中包含回應實體的主體。 XMLHttpRequest.responseText
Read only-
回傳一個字串,其中包含以文字形式呈現的請求回應,如果請求不成功或尚未發送,則回傳
null
。 XMLHttpRequest.responseType
-
指定回應的類型。
XMLHttpRequest.responseURL
Read only-
回傳回應的序列化 URL,如果 URL 為 null,則回傳空字串。
XMLHttpRequest.responseXML
Read only-
回傳一個包含請求回應的
Document
,如果請求不成功、尚未發送或無法解析為 XML 或 HTML,則回傳null
。在 Web Worker 中不可用。 XMLHttpRequest.status
Read only-
回傳請求的 HTTP 回應狀態碼。
XMLHttpRequest.statusText
Read only-
回傳一個字串,其中包含 HTTP 伺服器回傳的回應字串。與
XMLHttpRequest.status
不同,這包含回應訊息的完整文字(例如"OK"
)。備註: 根據 HTTP/2 規範 RFC 7540, section 8.1.2.4: Response Pseudo-Header Fields,HTTP/2 並未定義一種方法來攜帶 HTTP/1.1 狀態行中包含的版本或原因短語。
XMLHttpRequest.timeout
-
請求在自動終止前可以花費的時間(以毫秒為單位)。
XMLHttpRequest.upload
Read only-
一個
XMLHttpRequestUpload
,表示上傳過程。 XMLHttpRequest.withCredentials
-
如果跨站
Access-Control
請求應使用憑證(例如 Cookie 或授權標頭)發出,則回傳true
;否則回傳false
。
非標準屬性
XMLHttpRequest.mozAnon
Read only Non-standard-
一個布林值。如果為真值,請求將在不帶 Cookie 和驗證標頭的情況下發送。
XMLHttpRequest.mozSystem
Read only Non-standard-
一個布林值。如果為真值,則不會對請求強制執行同源政策。
實體方法
XMLHttpRequest.abort()
-
如果請求已發送,則中止該請求。
XMLHttpRequest.getAllResponseHeaders()
-
回傳所有回應標頭,以 CRLF 分隔,作為一個字串;如果尚未收到回應,則回傳
null
。 XMLHttpRequest.getResponseHeader()
-
回傳包含指定標頭文字的字串,如果尚未收到回應或回應中不存在該標頭,則回傳
null
。 XMLHttpRequest.open()
-
初始化一個請求。
XMLHttpRequest.overrideMimeType()
-
覆寫伺服器回傳的 MIME 類型。
XMLHttpRequest.send()
-
發送請求。如果請求是異步的(這是預設值),此方法會在請求發送後立即回傳。
XMLHttpRequest.setAttributionReporting()
Secure context 實驗性質-
表示你希望請求的回應能夠註冊歸因來源或觸發事件。
XMLHttpRequest.setRequestHeader()
-
設定 HTTP 請求標頭的值。你必須在呼叫
open()
之後、但在呼叫send()
之前呼叫setRequestHeader()
。
事件
abort
-
當請求被中止時觸發,例如因為程式呼叫了
XMLHttpRequest.abort()
。也可透過onabort
事件處理器屬性使用。 error
-
當請求遇到錯誤時觸發。也可透過
onerror
事件處理器屬性使用。 load
-
當
XMLHttpRequest
交易成功完成時觸發。也可透過onload
事件處理器屬性使用。 loadend
-
當請求完成時觸發,無論是成功(在
load
之後)還是不成功(在abort
或error
之後)。也可透過onloadend
事件處理器屬性使用。 loadstart
-
當請求開始載入資料時觸發。也可透過
onloadstart
事件處理器屬性使用。 progress
-
當請求接收到更多資料時定期觸發。也可透過
onprogress
事件處理器屬性使用。 readystatechange
-
每當
readyState
屬性變更時觸發。也可透過onreadystatechange
事件處理器屬性使用。 timeout
-
當進度因預設時間到期而終止時觸發。也可透過
ontimeout
事件處理器屬性使用。
規範
Specification |
---|
XMLHttpRequest # interface-xmlhttprequest |
瀏覽器相容性
參見
XMLSerializer
:將 DOM 樹序列化為 XML- 使用 XMLHttpRequest
- Fetch API