XMLHttpRequest
is a JavaScript object that was designed by Microsoft, adopted by Mozilla, and is now being standardized in the W3C . It provides an easy way to retrieve data at a URL. Despite its name, XMLHttpRequest
can be used to retrieve any type of data, not just XML, and it supports protocols other than HTTP (including file
and ftp
).
To create an instance of XMLHttpRequest
, simply do this:
var req = new XMLHttpRequest();
For details about how to use XMLHttpRequest
, see Using XMLHttpRequest .
XMLHttpRequest
connections per server to 6 (previous versions limit this to 2 per server). Some interactive web sites may keep an
XMLHttpRequest
connection open, so opening multiple sessions to such sites may result in the browser hanging in such a way that the window no longer repaints and controls don't respond. This value can be changed by editing the
network.http.max-persistent-connections-per-server
preference in
about:config
.
Method overview
void abort (); |
string getAllResponseHeaders (); |
ACString getResponseHeader (in AUTF8String header); |
[noscript] void init (in nsIPrincipal principal, in nsIScriptContext scriptContext, in nsPIDOMWindow ownerWindow); |
void open (in AUTF8String method, in AUTF8String url); |
[noscript] void openRequest (in AUTF8String method, in AUTF8String url, in boolean async, in AString user, in AString password); |
void overrideMimeType (in AUTF8String mimetype); |
void send ([optional] in nsIVariant body); |
void sendAsBinary (in DOMString body); New in Firefox 3 Non-standard |
void setRequestHeader (in AUTF8String header, in AUTF8String value); |
Properties
Attribute | Type | Description | ||||||||||||||||||
channel Non-standard | nsIChannel | The channel used by the object when performing the request. This is null if the channel hasn't been created yet. In the case of a multi-part request, this is the initial channel, not the different parts in the multi-part request. Requires elevated privileges to access; read-only. | ||||||||||||||||||
mozBackgroundRequest Non-standard | boolean | Indicates whether or not the object represents a background service request. If In cases in which a security dialog (such as authentication or a bad certificate notification) would normally be shown, the request simply fails instead. | ||||||||||||||||||
mozResponseArrayBuffer Requires Gecko 2.0 Non-standard | ArrayBuffer | The response to the request, as a JavaScript typed array. This is NULL if the request was not successful, or if it hasn't been sent yet. Read only. | ||||||||||||||||||
multipart | boolean | Indicates whether or not the response is expected to be a stream of possibly multiple XML documents. If set to This enables support for server push; for each XMLdocument that's written to this request, a new XMLDOMdocument is created and the
Note: When this is set, the
onload handler and other event handlers are not reset after the first XMLdocument is loaded, and the
onload handler is called after each part of the response is received.
| ||||||||||||||||||
| nsIDOMEventListener | A JavaScript function object that is called whenever the
Warning: This must not be used from native code. You should also not use this with synchronous requests.
| ||||||||||||||||||
readyState | long | The state of the request:
| ||||||||||||||||||
response | varies | The response entity body according to Implemented in Google Chrome but not in Gecko. | ||||||||||||||||||
responseText | AString | The response to the request as text, or null if the request was unsuccessful or has not yet been sent. Read-only. | ||||||||||||||||||
responseType | AString | Can be set to change the response type. Values are: the empty string (default), "arraybuffer", "blob", "document", and "text". Implemented in Google Chrome but not in Gecko. | ||||||||||||||||||
responseXML | nsIDOMDocument | The response to the request as a DOM
Note: If the server doesn't apply the
text/xml Content-Type header, you can use
overrideMimeType() to force
XMLHttpRequest to parse it as XML anyway.
| ||||||||||||||||||
status | unsigned long | The status of the response to the request. This is the HTTPresult code (for example, status is 200 for a successful request). Read-only. | ||||||||||||||||||
statusText | AUTF8String | The response string returned by the HTTPserver. Unlike status , this includes the entire text of the response message ("200 OK ", for example). Read-only. | ||||||||||||||||||
upload | nsIXMLHttpRequestUpload | The upload process can be tracked by adding an event listener to upload . New in Firefox 3.5 | ||||||||||||||||||
withCredentials | boolean | Indicates whether or not cross-site Access-Control requests should be made using credentials such as cookies or authorization headers. New in Firefox 3.5
Note: This never affects same-site requests.
The default is |
Methods
abort()
Aborts the request if it has already been sent.
void abort();
Parameters
None.
getAllResponseHeaders()
Returns all the response headers as a string.
string getAllResponseHeaders();
Parameters
None.
Return value
The text of all response headers, or null
if no response has been received.
getResponseHeader()
Returns the text of a specified header.
ACString getResponseHeader( in AUTF8String header );
Parameters
- The name of the header to retrieve.
header
Return value
A string containing the text of the specified header, or null
if either the response has not yet been received or the header doesn't exist in the response.
init()
Initializes the object for use from C++code.
[noscript] void init( in nsIPrincipal principal, in nsIScriptContext scriptContext, in nsPIDOMWindow ownerWindow );
Parameters
-
The principal to use for the request; must not be
null
. -
The script context to use for the request; must not be
null
. -
The window associated with the request; may be
null
.
principal
scriptContext
ownerWindow
open()
Initializes a request. This method is to be used from JavaScript code; to initialize a request from native code, use openRequest()
instead.
open()
or
openRequest()
has already been called)is the equivalent of calling
abort()
.
void open( in AUTF8String method, in AUTF8String url, [optional] in boolean async, [optional] in AString user, [optional] in AString password );
Parameters
- The HTTPmethod to use; either "POST"or "GET". Ignored for non-HTTPURLs.
- The URLto which to send the request.
-
An optional boolean parameter, defaulting to
true
, indicating whether or not to perform the operation asynchronously. If this value isfalse
, thesend()
method does not return until the response is received. Iftrue
, notification of a completed transaction is provided using event listeners. This must be true if themultipart
attribute istrue
, or an exception will be thrown. - The optional user name to use for authentication purposes; by default, this is an empty string.
- The optional password to use for authentication purposes; by default, this is an empty string.
method
url
async
user
password
openRequest()
Initializes a request. This method is to be used from native code; to initialize a request from JavaScript code, use open()
instead.
open()
or
openRequest()
has already been called) is the equivalent of calling
abort()
.
void open( in AUTF8String method, in AUTF8String url, in boolean async, in AString user, in AString password );
Parameters
- The HTTPmethod to use; either "POST"or "GET". Ignored for non-HTTPURLs.
- The URLto which to send the request.
-
An optional boolean parameter, defaulting to
true
, indicating whether or not to perform the operation asynchronously. If this value isfalse
, thesend()
method does not return until the response is received. Iftrue
, notification of a completed transaction is provided using event listeners. This must be true if themultipart
attribute istrue
, or an exception will be thrown. - The optional user name to use for authentication purposes; by default, this is an empty string.
- The optional password to use for authentication purposes; by default, this is an empty string.
method
url
async
user
password
overrideMimeType()
Overrides the MIMEtype returned by the server.
send()
.
void overrideMimeType( in AUTF8String mimetype );
Parameters
- The type that should be used instead of the one returned by the server, if any.
mimetype
send()
Sends the request. If the request is asynchronous (which is the default), this method returns as soon as the request is sent. If the request is synchronous, this method doesn't return until the response has arrived.
send()
.
void send( [optional] in nsIVariant body );
Parameters
-
This may be an
nsIDocument
,nsIInputStream
, or a string (annsISupportsString
if called from native code) that is used to populate the body of a POST request. Starting with Gecko 1.9.2, you may also specify an DOMFile
, and starting with Gecko 2.0 (Firefox 4 / Thunderbird 3.3 / SeaMonkey 2.1) you may also specify aFormData
object.
body
Notes
If the body is an nsIDOMDocument
, it is serialized before being sent.
If it's an nsIInputStream
, it must be compatible with nsIUploadChannel
's setUploadStream()
method. In that case, a Content-Length header is added to the request, with its value obtained using nsIInputStream
's available()
method. Any headers included at the top of the stream are treated as part of the message body. The stream's MIMEtype should be specified by setting the Content-Type header using the setRequestHeader()
method prior to calling send()
.
Requires Gecko 1.9 (Firefox 3)
sendAsBinary()
Non-standard
A variant of the send()
method that sends binary data.
void sendAsBinary( in DOMString body );
Parameters
- The request body as a DOMstring. This data is converted to a string of single-byte characters by truncation (removing the high-order byte of each character).
body
setRequestHeader()
Sets the value of an HTTPrequest header.
open()
before using this method.
void setRequestHeader( in AUTF8String header, in AUTF8String value );
Parameters
- The name of the header whose value is to be set.
- The value to set as the body of the header.
header
value
Implementation notes
XMLHttpRequest
is implemented in Gecko using the nsIJSXMLHttpRequest
and nsIXMLHttpRequest
interfaces.