AJAX

AJAX est l’accronyme de Asynchronous Javascript And Xml (JavaScript et XML asynchrones). Ce n’est pas une technologie en soi, mais une approche utilisant JavaScript pour envoyer des requêtes et recevoir des réponses du serveur sans avoir à recharger la page.

Cela permet par exemple de charger une partie de la page après son chargement, ou de charger du contenu après une interraction utilisateur (afficher la page suivante, changer d’onglet, etc). Compte tenu que la page n’est pas entièrement rechargée a chaque fois, le chargement est plus rapide et l’utilisation est plus fluide pour l’utilisateur.

Deux APIs Web permettent d’effectuer des requêtes AJAX, XMLHttpRequest (plus ancienne) et Fetch (utilise des promesses).


XMLHttpRequest

XMLHttpRequest (parfois abrégé XHR) est un constructeur permettant de créer des requêtes AJAX.
Internet Explorer d’utilise ActiveXObject et non XMLHttpRequest.

Pour récupérer des données XML:

var xhr = new XMLHttpRequest();
xhr.open('GET', '/server');

xhr.responseType = 'document';
xhr.overrideMimeType('text/xml');

xhr.onreadystatechange = function () {
    if (xhr.readyState === 4 && xhr.status === 200) {
        console.log(xhr.response);
        console.log(xhr.responseXML);
    }
};
xhr.send();

Si le support des anciens navigateurs est souhaité, compte tenu des différences d’implémentation entre différents navigateurs, il peut être interéssant d’utiliser une librairie. JQuery est la plus connue.


Fetch

Pour les navigateurs plus récents, il est possible d’utiliser l’API Fetch, une solution moderne qui vient remplacer XHR. Celle-ci est basée sur les promesses.

Pour récupérer des données XML:

fetch('/server')
.then(response => response.text())
.then(str => (new window.DOMParser()).parseFromString(str, "text/xml"))
.then(data => {
    console.log(data)
});