XMLHttpRequest

Les objets XMLHttpRequest (XHR) permettent d'interagir avec des serveurs. On peut récupérer des données à partir d'une URL sans avoir à rafraîchir complètement la page. Cela permet à une page web d'être mise à jour sans perturber les actions de l'utilisateur. XMLHttpRequest est beaucoup utilisé par l'approche AJAX.

Malgré son nom, XMLHttpRequest peut être utilisé afin de récupérer tout type de données et pas uniquement du XML.

Si vos opérations de communication nécessitent l'échange d'évènements ou de messages avec un serveur, pensez à utiliser les évènements serveur via l'interface EventSource. Pour une communication bidirectionnelle complète, les WebSockets peuvent être une meilleure alternative.

Constructeur

XMLHttpRequest()
Le constructeur initialise un objet XMLHttpRequest. Il doit être appelé avant toute autre méthode.

Propriétés

Cette interface hérite également des propriétés de XMLHttpRequestEventTarget et de EventTarget.

XMLHttpRequest.onreadystatechange
Un gestionnaire d'évènement (EventHandler) invoqué à chaque fois que l'attribut readyState change.
XMLHttpRequest.readyState Lecture seule
L'état de la requête sous la forme d'un unsigned short.
XMLHttpRequest.response Lecture seule
Un objet ArrayBuffer, Blob, Document, un objet JavaScript ou une chaîne de caractères (DOMString) selon la valeur de XMLHttpRequest.responseType. Cet objet contient le corps de la réponse.
XMLHttpRequest.responseText Lecture seule
Une chaîne de caractères DOMString qui contient la réponse à la requête sous forme de texte ou la valeur null si la requête a échoué ou n'a pas encore été envoyée.
XMLHttpRequest.responseType
Une valeur parmi une liste qui définit le type de réponse.
XMLHttpRequest.responseURL Lecture seule
L'URL sérialisée de la réponse ou la chaîne vide si l'URL est nulle.
XMLHttpRequest.responseXML Lecture seule
Un objet Document qui contient la réponse de la requête ou null si la requête a échoué, qu'elle n'a pas encore été envoyée ou qu'elle ne peut pas être analysée comme XML ou HTML. Cette propriété n'est pas disponible dans les workers.
XMLHttpRequest.status Lecture seule
Une valeur numérique unsigned short qui décrit le statut de la réponse à la requête.
XMLHttpRequest.statusText Lecture seule
Une chaîne DOMString qui contient la chaîne de caractères / réponse renvoyée par le serveur HTTP. À la différence de XMLHttpRequest.status, tout le texte du statut est inclus ("200 OK" plutôt que "200" par exemple).

Note : Selon la spécification HTTP/2 (voir 8.1.2.4 Response Pseudo-Header Fields), HTTP/2 ne définit pas de méthode pour porter la version ou la raison/phrase incluse dans la ligne de statut HTTP/1.1.

XMLHttpRequest.timeout
Un entier unsigned long qui représente le nombre de millisecondes qu'une requête peut prendre avant d'être terminée automatiquement.
XMLHttpRequestEventTarget.ontimeout
Un gestionnaire d'évènement (EventHandler) appelé lorsque la requête a expiré.
XMLHttpRequest.upload Lecture seule
Un objet XMLHttpRequestUpload qui représente le processus d'upload.
XMLHttpRequest.withCredentials
Un booléen (Boolean) qui indique si des requêtes Access-Control d'origines différentes peuvent être effectuées avec des informations d'authentification telles que des cookies ou des en-têtes d'autorisation.

Propriétés non-standard

XMLHttpRequest.channelLecture seule
Un objet nsIChannel. Le canal à utiliser par l'objet lorsqu'il effectue la requête.
XMLHttpRequest.mozAnonLecture seule
Un booléen. S'il est vrai, la requête sera envoyée sans cookie ou en-tête d'autorisation.
XMLHttpRequest.mozSystemLecture seule
Un booléen. S'il est vrai, la politique d'origine unique ne sera pas vérifiée pour la requête.
XMLHttpRequest.mozBackgroundRequest
Un booléen qui indique si l'objet représente une requête de service en arrière-plan.
XMLHttpRequest.mozResponseArrayBuffer Obsolète depuis Gecko 6 Lecture seule
Un objet ArrayBuffer qui est la réponse à la requête sous la forme d'un tableau typé JavaScript.
XMLHttpRequest.multipartObsolète depuis Gecko 22
Cette fonctionnalité spécifique à Gecko a été retirée avec Firefox/Gecko 22. Veuillez utiliser les évènements serveurs ou les web sockets ou encore la propriété responseText des évènements de progression.

Gestionnaires d'évènement

Le gestionnaire onreadystatechange, comme propriété des instances XMLHttpRequest, est pris en charge par l'ensemble des navigateurs.

D'autres gestionnaires d'évènements ont également été implémentés dans différents navigateurs (onload, onerror, onprogress, etc.). Voir le guide Manipuler XMLHttpRequest.

La plupart des navigateurs récents gère également les évènements via la méthode addEventListener() (en plus des méthodes  on*).

Méthodes

XMLHttpRequest.abort()
Interrompt la requête si elle a déjà été envoyée.
XMLHttpRequest.getAllResponseHeaders()
Renvoie, via une chaîne de caractères, l'ensemble des en-têtes de la réponse, séparés par CRLF ou la valeur null si aucune réponse n'a été reçue.
XMLHttpRequest.getResponseHeader()
Renvoie la chaîne de caractères contenant le texte de l'en-tête voulue ou null si aucune des réponse n'a été reçue ou si l'en-tête n'existe pas dans la réponse.
XMLHttpRequest.open()
Initialise une requête. Cette méthode doit être utilisée par du code JavaScript.
XMLHttpRequest.overrideMimeType()
Surcharge le type MIME renvoyé par le serveur.
XMLHttpRequest.send()
Envoie la requête. Si la requête est asynchrone (le comportement par défaut), la méthode renvoie un résultat dès que la requête est envoyée.
XMLHttpRequest.setRequestHeader()
Définit la valeur d'un en-tête de requête HTTP. Cette méthode doit être appelée après open() mais avantsend().

Méthodes non-standard

XMLHttpRequest.init()
Initialise l'objet depuis pour une utilisation depuis du code C++.
Attention ! Cette méthode ne doit pas être appelée depuis du code JavaScript.
XMLHttpRequest.openRequest()
Initialise une requête depuis du code natif. Voir la méthode open() ci-avant pour initialiser une requête de façon standard en JavaSCript.
XMLHttpRequest.sendAsBinary()
Une variante de send() afin d'envoyer des données binaires.

Évènements

abort
Se déclenche lorsqu'une requête a été interrompue (par exemple via XMLHttpRequest.abort()). Le gestionnaire
onabort est également disponible.
error
Se déclenche lorsqu'une requête a rencontré une erreur.
Le gestionnaire onerror est également disponible.
load
Se déclenche lorsqu'une transaction XMLHttpRequest se termine correctement. Le gestionnaire onload est également disponible.
loadend
Se déclenche lorsqu'une requête est terminée (avec une erreur ou non). Quand elle a réussi, l'évènement a lieu après load). Quand elle a échoué, l'évènement survient après error).
Le gestionnaire onloadend est également disponible.
loadstart
Se déclenche lorsqu'une requête commence à charger des données.
Le gestionnaire onloadstart est également disponible.
progress
Se déclenche périodiquement lorsqu'une requête reçoit des données supplémentaires. Le gestionnaire onprogress est également disponible.
timeout
Se déclenche lorsque la progression est terminée du fait de l'expiration de la durée limite. Le gestionnaire ontimeout est également disponible.

Spécifications

Spécification État Commentaires
XMLHttpRequest Standard évolutif Standard évolutif, version la plus récente.

Compatibilité des navigateurs

Update compatibility data on GitHub
OrdinateurMobile
ChromeEdgeFirefoxInternet ExplorerOperaSafariWebview AndroidChrome pour AndroidFirefox pour AndroidOpera pour AndroidSafari sur iOSSamsung Internet
XMLHttpRequestChrome Support complet 1Edge Support complet OuiFirefox Support complet 1IE Support complet 7
Support complet 7
Support complet 5
Notes
Notes Implemented via ActiveXObject
Opera Support complet OuiSafari Support complet 1.2WebView Android Support complet OuiChrome Android Support complet 18Firefox Android Support complet 4Opera Android Support complet OuiSafari iOS Support complet OuiSamsung Internet Android Support complet Oui
abortChrome Support complet 18Edge Support complet 12Firefox Support complet OuiIE Support complet 7
Support complet 7
Support complet 5
Notes
Notes Implemented via ActiveXObject
Opera Support complet OuiSafari Support complet 1.2WebView Android Support complet OuiChrome Android Support complet OuiFirefox Android Support complet OuiOpera Android Support complet OuiSafari iOS Support complet OuiSamsung Internet Android Support complet Oui
abort eventChrome Support complet OuiEdge ? Firefox Support complet OuiIE ? Opera Support complet OuiSafari Support complet OuiWebView Android Support complet OuiChrome Android Support complet OuiFirefox Android Support complet OuiOpera Android Support complet OuiSafari iOS ? Samsung Internet Android ?
error eventChrome Support complet OuiEdge ? Firefox Support complet OuiIE ? Opera Support complet OuiSafari Support complet OuiWebView Android Support complet OuiChrome Android Support complet OuiFirefox Android Support complet OuiOpera Android Support complet OuiSafari iOS ? Samsung Internet Android ?
getAllResponseHeadersChrome Support complet 1Edge Support complet 12Firefox Support complet 4
Notes
Support complet 4
Notes
Notes 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 Support complet 7
Support complet 7
Support complet 5
Notes
Notes Implemented via ActiveXObject
Opera Support complet OuiSafari Support complet 1.2WebView Android Support complet OuiChrome Android Support complet OuiFirefox Android Support complet 4
Notes
Support complet 4
Notes
Notes 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 Support complet OuiSafari iOS Support complet OuiSamsung Internet Android Support complet Oui
getResponseHeaderChrome Support complet 1Edge Support complet 12Firefox Support complet Oui
Notes
Support complet Oui
Notes
Notes 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 Support complet 7
Support complet 7
Support complet 5
Notes
Notes Implemented via ActiveXObject
Opera Support complet OuiSafari Support complet 1.2WebView Android Support complet OuiChrome Android Support complet 18Firefox Android Support complet Oui
Notes
Support complet Oui
Notes
Notes 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 Support complet OuiSafari iOS Support complet OuiSamsung Internet Android Support complet Oui
load eventChrome Support complet OuiEdge ? Firefox Support complet OuiIE ? Opera Support complet OuiSafari Support complet OuiWebView Android Support complet OuiChrome Android Support complet OuiFirefox Android Support complet OuiOpera Android Support complet OuiSafari iOS ? Samsung Internet Android ?
loadend eventChrome Support complet OuiEdge ? Firefox Support complet OuiIE ? Opera Support complet OuiSafari Support complet OuiWebView Android Support complet OuiChrome Android Support complet OuiFirefox Android Support complet OuiOpera Android Support complet OuiSafari iOS ? Samsung Internet Android ?
loadstart eventChrome Support complet OuiEdge ? Firefox Support complet OuiIE ? Opera Support complet OuiSafari Support complet OuiWebView Android Support complet OuiChrome Android Support complet OuiFirefox Android Support complet OuiOpera Android Support complet OuiSafari iOS ? Samsung Internet Android ?
onreadystatechangeChrome Support complet 1Edge Support complet 12Firefox Support complet 1IE Support complet 7
Notes
Support complet 7
Notes
Notes Internet Explorer version 5 and 6 supported ajax calls using ActiveXObject()
Opera Support complet OuiSafari Support complet 1.2WebView Android Support complet 1Chrome Android Support complet 18Firefox Android Support complet 4Opera Android Support complet OuiSafari iOS Support complet OuiSamsung Internet Android Support complet Oui
openChrome Support complet 1Edge Support complet 12Firefox Support complet Oui
Notes
Support complet Oui
Notes
Notes 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 Support complet 7
Support complet 7
Support complet 5
Notes
Notes Implemented via ActiveXObject
Opera Support complet OuiSafari Support complet 1.2WebView Android Support complet OuiChrome Android Support complet 18Firefox Android Support complet Oui
Notes
Support complet Oui
Notes
Notes 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 Support complet OuiSafari iOS Support complet OuiSamsung Internet Android Support complet Oui
overrideMimeTypeChrome Support complet 1Edge Support complet 12Firefox Support complet OuiIE Support complet 11
Support complet 11
Support complet 5
Notes
Notes Implemented via ActiveXObject
Opera Support complet OuiSafari Support complet 1.2WebView Android Support complet OuiChrome Android Support complet 18Firefox Android Support complet OuiOpera Android Support complet OuiSafari iOS Support complet OuiSamsung Internet Android Support complet Oui
progress eventChrome Support complet OuiEdge ? Firefox Support complet OuiIE ? Opera Support complet OuiSafari Support complet OuiWebView Android Support complet OuiChrome Android Support complet OuiFirefox Android Support complet OuiOpera Android Support complet OuiSafari iOS ? Samsung Internet Android ?
readyStateChrome Support complet 1Edge Support complet 12Firefox Support complet 1IE Support complet 7Opera Support complet OuiSafari Support complet 1.2WebView Android Support complet OuiChrome Android Support complet 18Firefox Android Support complet 4Opera Android Support complet OuiSafari iOS Support complet OuiSamsung Internet Android Support complet Oui
responseChrome Support complet OuiEdge Support complet 12Firefox Support complet OuiIE Support complet 10Opera Support complet OuiSafari Support complet OuiWebView Android Support complet OuiChrome Android Support complet OuiFirefox Android Support complet OuiOpera Android Support complet OuiSafari iOS Support complet OuiSamsung Internet Android Support complet Oui
responseTextChrome Support complet OuiEdge Support complet 12Firefox Support complet OuiIE Support complet Oui
Notes
Support complet Oui
Notes
Notes Before IE 10, the value of XMLHttpRequest.responseText could be read only once the request was complete.
Opera Support complet OuiSafari Support complet 10WebView Android Support complet OuiChrome Android Support complet OuiFirefox Android Support complet OuiOpera Android Support complet OuiSafari iOS Support complet OuiSamsung Internet Android Support complet Oui
responseTypeChrome Support complet 31Edge Support complet 12Firefox Support complet 6IE Support complet 10Opera Support complet 18Safari Support complet 7WebView Android Support complet 55Chrome Android Support complet 55Firefox Android Support complet 50Opera Android Support complet OuiSafari iOS Support complet OuiSamsung Internet Android Support complet 6.0
responseURLChrome Support complet 37Edge Support complet 14Firefox Support complet 32IE Aucun support NonOpera Support complet 24Safari Support complet 8WebView Android Support complet 37Chrome Android Support complet 37Firefox Android Support complet 32Opera Android Support complet 24Safari iOS Support complet OuiSamsung Internet Android Support complet Oui
responseXMLChrome Support complet OuiEdge Support complet 12Firefox Support complet Oui
Notes
Support complet Oui
Notes
Notes 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 Support complet OuiOpera Support complet OuiSafari Support complet OuiWebView Android Support complet OuiChrome Android Support complet OuiFirefox Android Support complet Oui
Notes
Support complet Oui
Notes
Notes 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 Support complet OuiSafari iOS Support complet OuiSamsung Internet Android Support complet Oui
sendChrome Support complet 1Edge Support complet 12Firefox Support complet 1IE Support complet 7
Support complet 7
Support complet 5
Notes
Notes Implemented via ActiveXObject
Opera Support complet OuiSafari Support complet 1.2WebView Android Support complet OuiChrome Android Support complet 18Firefox Android Support complet 4Opera Android Support complet OuiSafari iOS Support complet OuiSamsung Internet Android Support complet Oui
sendAsBinary
ObsolèteNon-standard
Chrome Aucun support Non
Notes
Aucun support Non
Notes
Notes There is a polyfill available to support sendAsBinary().
Edge Aucun support NonFirefox Aucun support 2 — 31IE Aucun support NonOpera Aucun support NonSafari Aucun support NonWebView Android Aucun support Non
Notes
Aucun support Non
Notes
Notes There is a polyfill available to support sendAsBinary().
Chrome Android Aucun support Non
Notes
Aucun support Non
Notes
Notes There is a polyfill available to support sendAsBinary().
Firefox Android Aucun support 4 — 31Opera Android Aucun support NonSafari iOS Aucun support NonSamsung Internet Android Aucun support Non
setRequestHeaderChrome Support complet 1Edge Support complet 12Firefox Support complet OuiIE Support complet 7
Support complet 7
Support complet 5
Notes
Notes Implemented via ActiveXObject
Opera Support complet OuiSafari Support complet 1.2WebView Android Support complet OuiChrome Android Support complet 18Firefox Android Support complet OuiOpera Android Support complet OuiSafari iOS Support complet OuiSamsung Internet Android Support complet Oui
statusChrome Support complet 1Edge Support complet 12Firefox Support complet 1IE Support complet 7
Notes
Support complet 7
Notes
Notes Internet Explorer version 5 and 6 supported ajax calls using ActiveXObject()
Opera Support complet OuiSafari Support complet 1.2WebView Android Support complet OuiChrome Android Support complet OuiFirefox Android Support complet 4Opera Android Support complet OuiSafari iOS Support complet OuiSamsung Internet Android Support complet Oui
statusTextChrome Support complet 1Edge Support complet 12Firefox Support complet 1IE Support complet 7
Notes
Support complet 7
Notes
Notes Internet Explorer version 5 and 6 supported ajax calls using ActiveXObject()
Opera Support complet OuiSafari Support complet 1.2WebView Android Support complet OuiChrome Android Support complet 18Firefox Android Support complet 4Opera Android Support complet OuiSafari iOS Support complet OuiSamsung Internet Android Support complet Oui
timeoutChrome Support complet 29Edge Support complet 12Firefox Support complet 12IE Support complet 8Opera Support complet 17
Support complet 17
Aucun support 12 — 16
Safari Support complet OuiWebView Android Support complet OuiChrome Android Support complet OuiFirefox Android Support complet OuiOpera Android Support complet 18
Support complet 18
Aucun support 12 — 16
Safari iOS Support complet OuiSamsung Internet Android Support complet Oui
timeout eventChrome Support complet OuiEdge Support complet OuiFirefox Support complet OuiIE ? Opera Support complet OuiSafari Support complet OuiWebView Android Support complet OuiChrome Android Support complet OuiFirefox Android Support complet OuiOpera Android Support complet OuiSafari iOS Support complet OuiSamsung Internet Android Support complet Oui
uploadChrome Support complet 1Edge Support complet 12Firefox Support complet OuiIE ? Opera Support complet OuiSafari Support complet 10WebView Android Support complet OuiChrome Android Support complet 18Firefox Android Support complet OuiOpera Android Support complet OuiSafari iOS Support complet OuiSamsung Internet Android Support complet Oui
withCredentialsChrome Support complet OuiEdge Support complet 12Firefox Support complet 3.5
Notes
Support complet 3.5
Notes
Notes 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 Support complet 10
Notes
Support complet 10
Notes
Notes Internet Explorer versions 8 and 9 supported cross-domain requests (CORS) using XDomainRequest.
Opera Support complet 12Safari Support complet 4WebView Android Support complet OuiChrome Android Support complet OuiFirefox Android Support complet 4
Notes
Support complet 4
Notes
Notes 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 Support complet OuiSafari iOS Support complet OuiSamsung Internet Android Support complet Oui

Légende

Support complet  
Support complet
Aucun support  
Aucun support
Compatibilité inconnue  
Compatibilité inconnue
Fonctionnalité non-standard. Celle-ci peut être incorrectement supportée par les autres navigateurs.
Fonctionnalité non-standard. Celle-ci peut être incorrectement supportée par les autres navigateurs.
Obsolète. Les nouveaux sites web ne doivent pas utiliser cette fonctionnalité.
Obsolète. Les nouveaux sites web ne doivent pas utiliser cette fonctionnalité.
Voir les notes d'implémentation.
Voir les notes d'implémentation.

Voir aussi