XMLHttpRequest (XHR) オブジェクトを使用して、サーバーと対話することができます。ページ全体を更新する必要なしに、データを受け取ることができます。これでユーザーの作業を中断させることなく、ウェブページの一部を更新することができます。 XMLHttpRequestAJAX プログラミングで頻繁に使用されます。

XMLHttpRequest という名前ではあるものの、 XML だけでなくあらゆる種類のデータを受け取るために使用することができ、 HTTP 以外の (file および ftp を含む) プロトコルにも対応しています。

通信においてサーバーからのイベントやメッセージデータの受信を含む必要があるのであれば、 EventSource インターフェイスを通じた server-sent events の使用も検討してください。全二重の通信では、 WebSockets の方が良いかもしれません。

コンストラクター

XMLHttpRequest()
XMLHttpRequest を初期化するコンストラクターです。これは、他のメソッドを呼び出す前に呼び出さなければなりません。

プロパティ

このインターフェイスは、 XMLHttpRequestEventTarget 及び EventTarget のプロパティを継承します。

XMLHttpRequest.onreadystatechange
readyState 属性が変更する都度呼び出される EventHandler です。
XMLHttpRequest.readyState 読取専用
リクエストの状態を unsigned short 型の値で返します。
XMLHttpRequest.response 読取専用
ArrayBufferBlobDocument、JavaScript オブジェクト、DOMString といった XMLHttpRequest.responseType に従ったレスポンスの実体ボディ。リクエストが完了していない、または成功しなかった場合、この値は null となります。
XMLHttpRequest.responseText 読取専用
リクエストに対するテキスト形式でのレスポンスを含む DOMString を返します。リクエストの失敗または未送信の場合は null となります。
XMLHttpRequest.responseType
レスポンス型を定義する、列挙型の値です。
XMLHttpRequest.responseURL 読取専用
レスポンスのシリアライズされた URL、または URL が null であれば空文字列を返します。
XMLHttpRequest.responseXML 読取専用 読取専用
リクエストに対する、DOM Document オブジェクト形式のレスポンスです。リクエストが完了していない、成功しなかった、もしくは XML または HTML としてパースに失敗した場合、この値は null となります。
XMLHttpRequest.status 読取専用
リクエストに対するレスポンスのステータスを unsigned short 型の値で返します。
XMLHttpRequest.statusText 読取専用
HTTP サーバーから返ってきたレスポンス文字列を DOMString 型の値で返します。 XMLHTTPRequest.status とは異なり、("200 OK" のように) レスポンスメッセージの完全な文が含まれています。

メモ: HTTP/2 仕様書 (8.1.2.4 レスポンス擬似ヘッダーフィールド) によれば、 HTTP/2 では、 HTTP/1.1 のステータス行に含まれていたバージョンや原因の文を運ぶ方法が定義されていません。

XMLHttpRequest.timeout
リクエストを自動的に終了できるようになるまでの時間をミリ秒単位で表す、 unsigned long 型の値です。
XMLHttpRequestEventTarget.ontimeout
リクエストがタイムアウトする都度呼び出される EventHandler
XMLHttpRequest.upload 読取専用
アップロードプロセスを表す XMLHttpRequestUpload です。
XMLHttpRequest.withCredentials
クロスサイト Access-Control リクエストに cookie や認証ヘッダといった認証情報を使用させるかを示す Boolean 型の値です。

標準外プロパティ

XMLHttpRequest.channel読取専用
nsIChannel です。リクエストの実行の際にオブジェクトによって使われるチャンネルです。
XMLHttpRequest.mozAnon読取専用
boolean です。 true の場合、リクエストは cookie や認証ヘッダを伴わずに送信します。
XMLHttpRequest.mozSystem読取専用
boolean です。 true の場合、リクエストで同一オリジンポリシーは適用されません。
XMLHttpRequest.mozBackgroundRequest
boolean です。オブジェクトがバックグラウンドサービスのリクエストであるかどうかを示します。
XMLHttpRequest.mozResponseArrayBuffer Gecko 6 で廃止 読取専用
ArrayBuffer です。リクエストに対する、JavaScript typed array 形式でのレスポンスです。
XMLHttpRequest.multipartGecko 22 で廃止
これは Gecko 独自の機能であり、Firefox/Gecko 22 で削除されました。代わりに Server-Sent EventsWeb Sockets、または progress イベントの responseText を使用してください。

イベントハンドラー

onreadystatechangeXMLHttpRequest のインスタンスとしてすべてのブラウザーが対応しています。

それ以来、数多くの追加のイベントハンドラーが様々なブラウザーに実装されてきています (onload, onerror, onprogress, など)。 XMLHttpRequest の使用を参照してください。

Firefox を含め、より新しいブラウザーでは、 XMLHttpRequest のイベントを on* プロパティをハンドラー関数に設定する方法に加えて、標準の addEventListener() API で待ち受けすることにも対応しています。

メソッド

XMLHttpRequest.abort()
リクエストがすでに送信されている場合、リクエストを中止します。
XMLHttpRequest.getAllResponseHeaders()
CRLF で区切られた文字列として、すべてのレスポンスヘッダを返します。レスポンスを何も受け取らなかった場合は null を返します。
XMLHttpRequest.getResponseHeader()
指定したヘッダ文を含む文字列を返します。レスポンスを受信していない、またはレスポンス中に指定したヘッダが存在しない場合は null を返します。
XMLHttpRequest.open()
リクエストを初期化します。このメソッドは JavaScript から使用するようにしてください。ネイティブコードからの初期化には、代わりに openRequest() を使用するようにしてください。
XMLHttpRequest.overrideMimeType()
サーバーから返ってくる MIME タイプを上書きします。
XMLHttpRequest.send()
リクエストを送信します。非同期リクエストの場合 (デフォルトの場合ですが)、メソッドはリクエストを送信して間もなく返ります。
XMLHttpRequest.setRequestHeader()
HTTP リクエストヘッダの値を設定します。 setRequestHeader()open() の後、および send() の前に呼び出さなくてはいけません。

標準外メソッド

XMLHttpRequest.init()
C++ コードから使用するために、オブジェクトを初期化します。
警告: JavaScript からこのメソッドを呼び出してはいけません
XMLHttpRequest.openRequest()
リクエストを初期化します。このメソッドはネイティブコードから使用するためのものです。 JavaScript コードからの初期化には、代わりに open() を使用してください。 open() の項目を参照してください。
XMLHttpRequest.sendAsBinary()
バイナリデータを送る、send() メソッドの亜種です。

仕様書

仕様書 状態 備考
XMLHttpRequest 現行の標準 Live standard 最新版

ブラウザーの対応

Update compatibility data on GitHub
デスクトップモバイル
ChromeEdgeFirefoxInternet ExplorerOperaSafariAndroid webviewAndroid 版 ChromeEdge MobileAndroid 版 FirefoxAndroid 版 OperaiOS 版 SafariSamsung Internet
基本対応Chrome 完全対応 1Edge 完全対応 ありFirefox 完全対応 1IE 完全対応 7Opera 完全対応 ありSafari 完全対応 1.2WebView Android 完全対応 ありChrome Android 完全対応 18Edge Mobile 完全対応 12Firefox Android 完全対応 4Opera Android 完全対応 ありSafari iOS ? Samsung Internet Android 完全対応 あり
onreadystatechangeChrome 完全対応 1Edge 完全対応 12Firefox 完全対応 1IE 完全対応 7
補足
完全対応 7
補足
補足 Internet Explorer version 5 and 6 supported ajax calls using ActiveXObject()
Opera 完全対応 ありSafari 完全対応 1.2WebView Android 完全対応 1Chrome Android 完全対応 18Edge Mobile 完全対応 ありFirefox Android 完全対応 4Opera Android 完全対応 ありSafari iOS ? Samsung Internet Android 完全対応 あり
readyStateChrome 完全対応 1Edge 完全対応 12Firefox 完全対応 1IE 完全対応 7Opera 完全対応 ありSafari 完全対応 1.2WebView Android 完全対応 ありChrome Android 完全対応 18Edge Mobile 完全対応 ありFirefox Android 完全対応 4Opera Android 完全対応 ありSafari iOS ? Samsung Internet Android 完全対応 あり
responseChrome 完全対応 ありEdge 完全対応 12Firefox 完全対応 ありIE ? Opera 完全対応 ありSafari 完全対応 ありWebView Android 完全対応 ありChrome Android 完全対応 ありEdge Mobile 完全対応 ありFirefox Android 完全対応 ありOpera Android 完全対応 ありSafari iOS ? Samsung Internet Android 完全対応 あり
responseTextChrome 完全対応 ありEdge 完全対応 12Firefox 完全対応 ありIE ?
補足
?
補足
補足 Before IE 10, the value of XMLHttpRequest.responseText could be read only once the request was complete.
Opera 完全対応 ありSafari 完全対応 10WebView Android 完全対応 ありChrome Android 完全対応 ありEdge Mobile 完全対応 ありFirefox Android 完全対応 ありOpera Android 完全対応 ありSafari iOS ? Samsung Internet Android 完全対応 あり
responseTypeChrome 完全対応 31Edge 完全対応 12Firefox 完全対応 6IE 完全対応 10Opera 完全対応 18Safari 完全対応 7WebView Android 完全対応 55Chrome Android 完全対応 55Edge Mobile 完全対応 ありFirefox Android 完全対応 50Opera Android 完全対応 ありSafari iOS ? Samsung Internet Android 完全対応 6.0
responseURLChrome 完全対応 37Edge 完全対応 14Firefox 完全対応 32IE 未対応 なしOpera 完全対応 24Safari 完全対応 8WebView Android 完全対応 37Chrome Android 完全対応 37Edge Mobile ? Firefox Android 完全対応 32Opera Android 完全対応 24Safari iOS ? Samsung Internet Android 完全対応 あり
responseXMLChrome 完全対応 ありEdge 完全対応 12Firefox 完全対応 あり
補足
完全対応 あり
補足
補足 Prior to Firefox 51, an error parsing the received data added a <parsererror> node to the top of the Document and then returned the Document in whatever state it happens to be in. This was inconsistent with the specification. Starting with Firefox 51, this scenario now correctly returns null as per the spec.
IE 完全対応 ありOpera 完全対応 ありSafari 完全対応 ありWebView Android 完全対応 ありChrome Android 完全対応 ありEdge Mobile 完全対応 ありFirefox Android 完全対応 あり
補足
完全対応 あり
補足
補足 Prior to Firefox 51, an error parsing the received data added a <parsererror> node to the top of the Document and then returned the Document in whatever state it happens to be in. This was inconsistent with the specification. Starting with Firefox 51, this scenario now correctly returns null as per the spec.
Opera Android 完全対応 ありSafari iOS 完全対応 ありSamsung Internet Android 完全対応 あり
statusChrome 完全対応 1Edge 完全対応 12Firefox 完全対応 1IE 完全対応 7
補足
完全対応 7
補足
補足 Internet Explorer version 5 and 6 supported ajax calls using ActiveXObject()
Opera 完全対応 ありSafari 完全対応 1.2WebView Android 完全対応 ありChrome Android 完全対応 ありEdge Mobile 完全対応 ありFirefox Android 完全対応 4Opera Android 完全対応 ありSafari iOS ? Samsung Internet Android 完全対応 あり
statusTextChrome 完全対応 1Edge 完全対応 12Firefox 完全対応 1IE 完全対応 7
補足
完全対応 7
補足
補足 Internet Explorer version 5 and 6 supported ajax calls using ActiveXObject()
Opera 完全対応 ありSafari 完全対応 1.2WebView Android 完全対応 ありChrome Android 完全対応 18Edge Mobile 完全対応 ありFirefox Android 完全対応 4Opera Android 完全対応 ありSafari iOS ? Samsung Internet Android 完全対応 あり
timeoutChrome 完全対応 29Edge 完全対応 12Firefox 完全対応 12IE 完全対応 8Opera 完全対応 17
完全対応 17
未対応 12 — 16
Safari 完全対応 ありWebView Android 完全対応 ありChrome Android 完全対応 ありEdge Mobile 完全対応 ありFirefox Android 完全対応 ありOpera Android 完全対応 ありSafari iOS ? Samsung Internet Android 完全対応 あり
uploadChrome 完全対応 1Edge 完全対応 12Firefox 完全対応 ありIE ? Opera 完全対応 ありSafari 完全対応 10WebView Android 完全対応 ありChrome Android 完全対応 18Edge Mobile ? Firefox Android ? Opera Android 完全対応 ありSafari iOS ? Samsung Internet Android 完全対応 あり
withCredentialsChrome 完全対応 ありEdge 完全対応 12Firefox 完全対応 3.5
補足
完全対応 3.5
補足
補足 Starting with Firefox 11, it's no longer supported to use the withCredentials attribute when performing synchronous requests. Attempting to do so throws an NS_ERROR_DOM_INVALID_ACCESS_ERR exception.
IE 完全対応 10
補足
完全対応 10
補足
補足 Internet Explorer versions 8 and 9 supported cross-domain requests (CORS) using XDomainRequest
Opera 完全対応 12Safari 完全対応 4WebView Android 完全対応 ありChrome Android 完全対応 ありEdge Mobile ? Firefox Android 完全対応 4
補足
完全対応 4
補足
補足 Starting with Firefox 11, it's no longer supported to use the withCredentials attribute when performing synchronous requests. Attempting to do so throws an NS_ERROR_DOM_INVALID_ACCESS_ERR exception.
Opera Android 完全対応 ありSafari iOS ? Samsung Internet Android 完全対応 あり
abortChrome 完全対応 18Edge 完全対応 12Firefox 完全対応 ありIE 完全対応 7
完全対応 7
完全対応 5
補足
補足 Implemented via ActiveXObject
Opera 完全対応 ありSafari 完全対応 1.2WebView Android 完全対応 ありChrome Android 完全対応 ありEdge Mobile 完全対応 ありFirefox Android 完全対応 ありOpera Android 完全対応 ありSafari iOS ? Samsung Internet Android 完全対応 あり
getAllResponseHeadersChrome 完全対応 1Edge 完全対応 12Firefox 完全対応 4
補足
完全対応 4
補足
補足 Starting from Firefox 49, empty headers are returned as empty strings in case the preference network.http.keep_empty_response_headers_as_empty_string is set to true, defaulting to false. Before Firefox 49 empty headers had been ignored. Since Firefox 50 the preference defaults to true.
IE 完全対応 7
完全対応 7
完全対応 5
補足
補足 Implemented via ActiveXObject
Opera 完全対応 ありSafari 完全対応 1.2WebView Android 完全対応 ありChrome Android 完全対応 ありEdge Mobile 完全対応 ありFirefox Android 完全対応 4
補足
完全対応 4
補足
補足 Starting from Firefox 49, empty headers are returned as empty strings in case the preference network.http.keep_empty_response_headers_as_empty_string is set to true, defaulting to false. Before Firefox 49 empty headers had been ignored. Since Firefox 50 the preference defaults to true.
Opera Android 完全対応 ありSafari iOS ? Samsung Internet Android 完全対応 あり
getResponseHeaderChrome 完全対応 1Edge 完全対応 12Firefox 完全対応 あり
補足
完全対応 あり
補足
補足 Starting from Firefox 49, empty headers are returned as empty strings in case the preference network.http.keep_empty_response_headers_as_empty_string is set to true, defaulting to false. Before Firefox 49 empty headers had been ignored. Since Firefox 50 the preference defaults to true.
IE 完全対応 7
完全対応 7
完全対応 5
補足
補足 Implemented via ActiveXObject
Opera 完全対応 ありSafari 完全対応 1.2WebView Android 完全対応 ありChrome Android 完全対応 18Edge Mobile 完全対応 ありFirefox Android 完全対応 あり
補足
完全対応 あり
補足
補足 Starting from Firefox 49, empty headers are returned as empty strings in case the preference network.http.keep_empty_response_headers_as_empty_string is set to true, defaulting to false. Before Firefox 49 empty headers had been ignored. Since Firefox 50 the preference defaults to true.
Opera Android 完全対応 ありSafari iOS ? Samsung Internet Android 完全対応 あり
openChrome 完全対応 1Edge 完全対応 12Firefox 完全対応 あり
補足
完全対応 あり
補足
補足 Starting in Firefox 30, synchronous requests on the main thread have been deprecated due to their negative impact on performance and the user experience. Therefore, the async parameter may not be false except in a Worker.
IE 完全対応 7
完全対応 7
完全対応 5
補足
補足 Implemented via ActiveXObject
Opera 完全対応 ありSafari 完全対応 1.2WebView Android 完全対応 ありChrome Android 完全対応 18Edge Mobile 完全対応 ありFirefox Android 完全対応 あり
補足
完全対応 あり
補足
補足 Starting in Firefox 30, synchronous requests on the main thread have been deprecated due to their negative impact on performance and the user experience. Therefore, the async parameter may not be false except in a Worker.
Opera Android 完全対応 ありSafari iOS 完全対応 ありSamsung Internet Android 完全対応 あり
overrideMimeTypeChrome 完全対応 1Edge 完全対応 12Firefox 完全対応 ありIE 完全対応 11
完全対応 11
完全対応 5
補足
補足 Implemented via ActiveXObject
Opera 完全対応 ありSafari 完全対応 1.2WebView Android 完全対応 ありChrome Android 完全対応 18Edge Mobile 完全対応 ありFirefox Android 完全対応 ありOpera Android 完全対応 ありSafari iOS 完全対応 ありSamsung Internet Android 完全対応 あり
sendChrome 完全対応 1Edge 完全対応 12Firefox 完全対応 1IE 完全対応 7
完全対応 7
完全対応 5
補足
補足 Implemented via ActiveXObject
Opera 完全対応 ありSafari 完全対応 1.2WebView Android 完全対応 ありChrome Android 完全対応 18Edge Mobile 完全対応 ありFirefox Android 完全対応 4Opera Android 完全対応 ありSafari iOS 完全対応 ありSamsung Internet Android 完全対応 あり
sendAsBinary
非推奨非標準
Chrome 未対応 なし
補足
未対応 なし
補足
補足 There is a polyfill available to support sendAsBinary().
Edge 未対応 なしFirefox 未対応 2 — 31IE 未対応 なしOpera 未対応 なしSafari 未対応 なしWebView Android 未対応 なし
補足
未対応 なし
補足
補足 There is a polyfill available to support sendAsBinary().
Chrome Android 未対応 なし
補足
未対応 なし
補足
補足 There is a polyfill available to support sendAsBinary().
Edge Mobile 未対応 なしFirefox Android 未対応 4 — 31Opera Android 未対応 なしSafari iOS 未対応 なしSamsung Internet Android 未対応 なし
setRequestHeaderChrome 完全対応 1Edge 完全対応 12Firefox 完全対応 ありIE 完全対応 7
完全対応 7
完全対応 5
補足
補足 Implemented via ActiveXObject
Opera 完全対応 ありSafari 完全対応 1.2WebView Android 完全対応 ありChrome Android 完全対応 18Edge Mobile 完全対応 ありFirefox Android 完全対応 ありOpera Android 完全対応 ありSafari iOS 完全対応 ありSamsung Internet Android 完全対応 あり

凡例

完全対応  
完全対応
未対応  
未対応
実装状況不明  
実装状況不明
非標準。ブラウザー間の互換性が低い可能性があります。
非標準。ブラウザー間の互換性が低い可能性があります。
非推奨。新しいウェブサイトでは使用しないでください。
非推奨。新しいウェブサイトでは使用しないでください。
実装ノートを参照してください。
実装ノートを参照してください。

関連情報

ドキュメントのタグと貢献者

最終更新者: mfuji09,