Introduction : La Problématique du Web Traditionnel

Avant l’avènement d’AJAX, les applications web fonctionnaient de manière synchrone. Cela signifiait que :

  • À chaque action de l’utilisateur (un clic, l’envoi d’un formulaire), une requête GET ou POST était envoyée au serveur.
  • En réponse, toute la page web était entièrement rechargée.

Ce fonctionnement entraînait de nombreux défauts, notamment :

  • Lenteur de l’expérience utilisateur.
  • Excès de consommation de bande passante.
  • Blocage de l’interface pendant l’attente des réponses du serveur.

AJAX a résolu ce problème en permettant des communications asynchrones avec le serveur.


1. Qu’est-ce qu’AJAX ?

AJAX n’est pas un langage de programmation ; c’est une technique qui utilise plusieurs technologies existantes :

  • Asynchronous (Asynchrone) : La clé de la technique. Cela signifie que le navigateur n’attend pas la fin d’une tâche (la réponse du serveur) pour exécuter la ligne de code suivante. L’utilisateur peut continuer d’interagir avec la page pendant que le serveur travaille en arrière-plan.
  • JavaScript : Le langage principal utilisé pour envoyer les requêtes au serveur.
  • XML (ou JSON aujourd’hui) : Le format pour structurer et échanger les informations entre le serveur et le client.

Rôle : AJAX permet de mettre à jour uniquement une partie de la page web (comme un flux Twitter, un compteur de likes, ou un champ de saisie) sans recharger l’intégralité de la page.

2. Synchrone vs. Asynchrone

Comprendre la différence entre les deux modes est essentiel :

ModeFonctionnement ClassiqueImpact
SynchroneL’exécution du code attend que l’instruction précédente soit terminée (exécution séquentielle, ligne par ligne).Le navigateur se bloque pendant l’attente du serveur.
AsynchroneLes fonctions sont exécutées uniquement si un événement se produit, et l’exécution du code se poursuit sans attendre la réponse.L’interface utilisateur reste fluide et réactive.

3. La Mise en Œuvre : L’Objet XMLHttpRequest

En JavaScript, l’objet central qui gère la communication asynchrone est l’objet XMLHttpRequest (souvent abrégé en req).

ÉtapeAction (Code)Rôle
1. Création de l’objetreq = new XMLHttpRequest();Crée l’objet qui va gérer la connexion et l’échange de données.
2. Définition de la fonction de rappelreq.onreadystatechange = function() { ... };Définit la fonction qui sera appelée uniquement lorsque le serveur aura envoyé une réponse.
3. Paramétrage de la requêtereq.open("GET", "data.txt", true);Configure le type de requête (GET ou POST), la ressource ciblée (data.txt), et spécifie que la requête est asynchrone (true).
4. Envoi de la requêtereq.send(null);Envoie la requête HTTP au serveur.

4. Récupérer et Afficher les Données

Une fois la réponse reçue par l’objet XMLHttpRequest, il faut la traiter et l’injecter dans la page HTML (le DOM).

  • Le texte de la réponse est contenu dans l’attribut responseText de l’objet req.
  • Pour afficher le résultat dans une partie spécifique de la page, on utilise JavaScript pour manipuler le DOM :

JavaScript

/* On injecte le texte de la réponse (response) dans un élément HTML (getElementById) */
document.getElementById("maDiv").innerHTML = req.responseText;

Exemple d’Application AJAX : L’Autocomplétion

Un exemple classique de l’utilité d’AJAX est l’autocomplétion. Lorsqu’un utilisateur tape les premières lettres d’une ville dans un champ de formulaire :

  1. JavaScript envoie la saisie au serveur via AJAX.
  2. Le serveur cherche les villes correspondantes dans la base de données.
  3. Le serveur renvoie la liste au client.
  4. JavaScript met à jour un petit menu déroulant sans recharger la page.