API XMLHttpRequest
Baseline
Large disponibilité
*
Cette fonctionnalité est bien établie et fonctionne sur de nombreux appareils et versions de navigateurs. Elle est disponible sur tous les navigateurs depuis juillet 2015.
* Certaines parties de cette fonctionnalité peuvent bénéficier de prise en charge variables.
Note : Cette fonctionnalité est disponible via les Web Workers, sauf pour les Service Workers.
L'API XMLHttpRequest permet aux applications web de faire des requêtes HTTP aux serveurs web et de recevoir les réponses de manière programmatique en utilisant JavaScript. Cela permet à un site web de mettre à jour seulement une partie d'une page avec des données provenant du serveur, plutôt que de devoir naviguer vers une toute nouvelle page. Cette pratique est également parfois connue sous le nom de AJAX.
L'API Fetch est le remplacement plus flexible et puissant de l'API XMLHttpRequest. L'API Fetch utilise les promesses au lieu des évènements pour gérer les réponses asynchrones, s'intègre bien avec les service workers, et prend en charge des aspects avancés du HTTP tels que CORS. Pour ces raisons, l'API Fetch est généralement utilisée dans les applications web modernes à la place de XMLHttpRequest.
Concepts et utilisation
L'interface centrale de l'API XMLHttpRequest est XMLHttpRequest. Pour effectuer une requête HTTP :
- Créer une nouvelle instance de
XMLHttpRequesten appelant son constructeur. - L'initialiser en appelant
XMLHttpRequest.open(). À ce stade, vous fournissez l'URL pour la requête, la méthode HTTP à utiliser, et éventuellement, un nom d'utilisateur·ice et un mot de passe. - Attacher des gestionnaires d'évènements pour obtenir le résultat de la requête. Par exemple, l'évènement
loadest déclenché lorsque la requête s'est terminée avec succès, et l'évènementerrorest déclenché dans diverses conditions d'erreur. - Envoyer la requête en appelant
XMLHttpRequest.send().
Pour un guide détaillé de l'API XMLHttpRequest, voir Utiliser XMLHttpRequest.
Interfaces
FormData-
Un objet représentant les champs et les valeurs d'un formulaire (
<form>), qui peut être envoyé à un serveur en utilisantXMLHttpRequestoufetch(). ProgressEvent-
Une sous-classe de
Eventqui est transmise à l'évènementprogress, et qui contient des informations sur la progression de la requête. XMLHttpRequest-
Représente une seule requête HTTP.
XMLHttpRequestEventTarget-
Une superclasse à la fois de
XMLHttpRequestet deXMLHttpRequestUpload, définissant les évènements disponibles dans ces deux interfaces. XMLHttpRequestUpload-
Représente le processus de téléversement pour une requête HTTP. Fournit des évènements permettant au code de suivre la progression d'un téléversement.
Exemples
>Récupérer les données JSON depuis le serveur
Dans cet exemple, nous récupérons un fichier JSON depuis https://raw.githubusercontent.com/mdn/content/main/files/en-us/_wikihistory.json, en ajoutant des écouteurs d'évènements pour montrer la progression de la requête.
HTML
<div class="controles">
<button class="xhr" type="button">Cliquez pour démarrer XHR</button>
</div>
<textarea readonly class="journal-event"></textarea>
JavaScript
const boutonXHR = document.querySelector(".xhr");
const journal = document.querySelector(".journal-event");
const url =
"https://raw.githubusercontent.com/mdn/content/main/files/en-us/_wikihistory.json";
function gererEvent(e) {
journal.textContent = `${journal.textContent}${e.type} : ${e.loaded} octets transférés\n`;
}
function ajouterEcouteur(xhr) {
xhr.addEventListener("loadstart", gererEvent);
xhr.addEventListener("load", gererEvent);
xhr.addEventListener("loadend", gererEvent);
xhr.addEventListener("progress", gererEvent);
xhr.addEventListener("error", gererEvent);
xhr.addEventListener("abort", gererEvent);
}
boutonXHR.addEventListener("click", () => {
journal.textContent = "";
const xhr = new XMLHttpRequest();
xhr.open("GET", url);
ajouterEcouteur(xhr);
xhr.send();
});
Résultat
Spécifications
| Spécification |
|---|
| XMLHttpRequest> |