--- title: XMLHttpRequest slug: Web/API/XMLHttpRequest translation_of: Web/API/XMLHttpRequest ---
{{APIRef("XMLHttpRequest") }}

ใช้วัตถุ (XHR) เพื่อโต้ตอบกับเซิร์ฟเวอร์ คุณสามารถดึงข้อมูลจาก URL โดยไม่ต้องทำการฟื้นฟูเต็มหน้า เว็บเพจการปรับปรุงเพียงบางส่วนของหน้าโดยไม่กระทบกับสิ่งที่ผู้ใช้จะทำได้XMLHttpRequest XMLHttpRequest ใช้มากใน {{Glossary("AJAX") }} เขียนโปรแกรม

{{InheritanceDiagram (650, 150) }}

แม้จะชื่อ สามารถใช้ในการดึงข้อมูลทุกประเภทของข้อมูล XML ไม่เพียงXMLHttpRequest

ถ้าจำเป็นต้องเกี่ยวข้องกับการได้รับข้อมูลเหตุการณ์หรือข้อความจากเซิร์ฟเวอร์สื่อสารของคุณ ลองใช้กิจกรรมเซิร์ฟเวอร์ส่งผ่านอินเทอร์เฟซ {{domxref("EventSource") }} สำหรับเพล็กซ์การสื่อสารWebSocketsอาจเป็นทางเลือกที่ดี

Constructor

{{domxref("XMLHttpRequest.XMLHttpRequest", "XMLHttpRequest()")}}
The constructor initializes an XMLHttpRequest. It must be called before any other method calls.

Properties

This interface also inherits properties of {{domxref("XMLHttpRequestEventTarget")}} and of {{domxref("EventTarget")}}.

{{domxref("XMLHttpRequest.onreadystatechange")}}
An {{domxref("EventHandler")}} that is called whenever the attribute changes.readyState
{{domxref("XMLHttpRequest.readyState")}} {{readonlyinline}}
Returns an , the state of the request.unsigned short
{{domxref("XMLHttpRequest.response")}} {{readonlyinline}}
Returns an {{jsxref("ArrayBuffer")}}, {{domxref("Blob")}}, {{domxref("Document")}}, JavaScript object, or a {{domxref("DOMString")}}, depending on the value of {{domxref("XMLHttpRequest.responseType")}}, that contains the response entity body.
{{domxref("XMLHttpRequest.responseText")}} {{readonlyinline}}
Returns a {{domxref("DOMString")}} that contains the response to the request as text, or if the request was unsuccessful or has not yet been sent.null
{{domxref("XMLHttpRequest.responseType")}}
Is an enumerated value that defines the response type.
{{domxref("XMLHttpRequest.responseURL")}} {{readonlyinline}}
Returns the serialized URL of the response or the empty string if the URL is null.
{{domxref("XMLHttpRequest.responseXML")}} {{readonlyinline}}
Returns a {{domxref("Document")}} containing the response to the request, or if the request was unsuccessful, has not yet been sent, or cannot be parsed as XML or HTML. Not available in workers.null
{{domxref("XMLHttpRequest.status")}} {{readonlyinline}}
Returns an with the status of the response of the request.unsigned short
{{domxref("XMLHttpRequest.statusText")}} {{readonlyinline}}
Returns a {{domxref("DOMString")}} containing the response string returned by the HTTP server. Unlike {{domxref("XMLHttpRequest.status")}}, this includes the entire text of the response message ("", for example).200 OK

Note: According to the HTTP/2 specification (8.1.2.4 Response Pseudo-Header Fields), HTTP/2 does not define a way to carry the version or reason phrase that is included in an HTTP/1.1 status line.

{{domxref("XMLHttpRequest.timeout")}}
Is an representing the number of milliseconds a request can take before automatically being terminated.unsigned long
{{domxref("XMLHttpRequestEventTarget.ontimeout")}}
Is an {{domxref("EventHandler")}} that is called whenever the request times out. {{gecko_minversion_inline("12.0")}}
{{domxref("XMLHttpRequest.upload")}} {{readonlyinline}}
Is an {{domxref("XMLHttpRequestUpload")}}, representing the upload process.
{{domxref("XMLHttpRequest.withCredentials")}}
Is a {{domxref("Boolean")}} that indicates whether or not cross-site requests should be made using credentials such as cookies or authorization headers.Access-Control

Non-standard properties

{{domxref("XMLHttpRequest.channel")}}{{ReadOnlyInline}}
Is a {{Interface("nsIChannel")}}. The channel used by the object when performing the request.
{{domxref("XMLHttpRequest.mozAnon")}}{{ReadOnlyInline}}
Is a boolean. If true, the request will be sent without cookie and authentication headers.
{{domxref("XMLHttpRequest.mozSystem")}}{{ReadOnlyInline}}
Is a boolean. If true, the same origin policy will not be enforced on the request.
{{domxref("XMLHttpRequest.mozBackgroundRequest")}}
Is a boolean. It indicates whether or not the object represents a background service request.
{{domxref("XMLHttpRequest.mozResponseArrayBuffer")}}{{gecko_minversion_inline("2.0")}} {{obsolete_inline("6")}} {{ReadOnlyInline}}
{{jsxref("ArrayBuffer")}}. The response to the request, as a JavaScript typed array.
{{domxref("XMLHttpRequest.multipart")}}{{obsolete_inline("22")}}
This Gecko-only feature, a boolean, was removed in Firefox/Gecko 22. Please use Server-Sent Events, Web Sockets, or from progress events instead.responseText

Event handlers

onreadystatechange as a property of the instance is supported in all browsers.XMLHttpRequest

Since then, a number of additional event handlers have been implemented in various browsers (, , , etc.). See Using XMLHttpRequest.onloadonerroronprogress

More recent browsers, including Firefox, also support listening to the events via standard {{domxref("EventTarget.addEventListener", "addEventListener()")}} APIs in addition to setting properties to a handler function.XMLHttpRequeston*

Methods

{{domxref("XMLHttpRequest.abort()")}}
Aborts the request if it has already been sent.
{{domxref("XMLHttpRequest.getAllResponseHeaders()")}}
Returns all the response headers, separated by {{Glossary("CRLF")}}, as a string, or if no response has been received.null
{{domxref("XMLHttpRequest.getResponseHeader()")}}
Returns the string containing the text of the specified header, or if either the response has not yet been received or the header doesn't exist in the response.null
{{domxref("XMLHttpRequest.open()")}}
Initializes a request. This method is to be used from JavaScript code; to initialize a request from native code, use openRequest() instead.
{{domxref("XMLHttpRequest.overrideMimeType()")}}
Overrides the MIME type returned by the server.
{{domxref("XMLHttpRequest.send()")}}
Sends the request. If the request is asynchronous (which is the default), this method returns as soon as the request is sent.
{{domxref("XMLHttpRequest.setRequestHeader()")}}
Sets the value of an HTTP request header. You must call after open(), but before .setRequestHeader()send()

Non-standard methods

{{domxref("XMLHttpRequest.init()")}}
Initializes the object for use from C++ code.
Warning: This method must not be called from JavaScript.
{{domxref("XMLHttpRequest.openRequest()")}}
Initializes a request. This method is to be used from native code; to initialize a request from JavaScript code, use open() instead. See the documentation for .open()
{{domxref("XMLHttpRequest.sendAsBinary()")}}{{deprecated_inline()}}
A variant of the method that sends binary data.send()

Events

{{domxref("XMLHttpRequest/abort_event", "abort")}}
Fired when a request has been aborted, for example because the program called {{domxref("XMLHttpRequest.abort()")}}.
Also available via the {{domxref("XMLHttpRequestEventTarget/onabort", "onabort")}} property.
{{domxref("XMLHttpRequest/error_event", "error")}}
Fired when the request encountered an error.
Also available via the {{domxref("XMLHttpRequestEventTarget/onerror", "onerror")}} property.
{{domxref("XMLHttpRequest/load_event", "load")}}
Fired when an {{domxref("XMLHttpRequest")}} transaction completes successfully.
Also available via the {{domxref("XMLHttpRequestEventTarget/onload", "onload")}} property.
{{domxref("XMLHttpRequest/loadend_event", "loadend")}}
Fired when a request has completed, whether successfully (after {{domxref("XMLHttpRequest/load_event", "load")}}) or unsuccessfully (after {{domxref("XMLHttpRequest/abort_event", "abort")}} or {{domxref("XMLHttpRequest/error_event", "error")}}).
Also available via the {{domxref("XMLHttpRequestEventTarget/onloadend", "onloadend")}} property.
{{domxref("XMLHttpRequest/loadstart_event", "loadstart")}}
Fired when a request has started to load data.
Also available via the {{domxref("XMLHttpRequestEventTarget/onloadstart", "onloadstart")}} property.
{{domxref("XMLHttpRequest/progress_event", "progress")}}
Fired periodically when a request receives more data.
Also available via the {{domxref("XMLHttpRequestEventTarget/onprogress", "onprogress")}} property.
{{domxref("XMLHttpRequest/timeout_event", "timeout")}}
Fired when progress is terminated due to preset time expiring.
Also available via the {{domxref("XMLHttpRequestEventTarget/ontimeout", "ontimeout")}} property.

Specifications

Specification Status Comment
{{SpecName('XMLHttpRequest')}} {{Spec2('XMLHttpRequest')}} Live standard, latest version

Browser compatibility

{{Compat("api.XMLHttpRequest")}}

See also