Mais d'où ça vient ?

C'est Microsoft qui est à l'initiative de cet techno pour IE 5, elle a ensuite été ajoutée aux spécifications Load and Save du W3C. Aujourd'hui compatible avec la plupart des navigateurs récents, l'utilisation du XmlHttpRequest va prendre de l'ampleur !

Quel est l'enjeu ?

C'est la sensation de rapidité, mais attention, la vitesse de transfert des données entre le serveur et le client n'est pas plus élevée, par contre nous développons différement : on peut travailler en tache de fond.

Exemple du flag dans Gmail (Pour ceux qui ne suivent pas, connectez vous à Gmail avec le login demoxmlhttprequest et mot de passe xml2005 et essayer de cliquer sur les étoiles à gauches des messages). Je vois trois façons de "flaguer un message" :

  • Le clique sur l'étoile envoie un formulaire au serveur qui renvoie une page au client avec le message flagué (évidement très long...)
  • Le clique sur l'étoile envoie un formulaire au serveur dans une iframe cachée. Le résultat n'est pas visible dans une autre page tant que l'update n'est pas terminé. L'étoile change de couleur grâce au DOM (d'où l'impression de rapidité).
  • Enfin, avec le XmlHttpRequest, on peut aborder le problème différement : au chargement de l'application Gmail, l'ensemble des données sont chargées sur le client sous la forme d'un "arbre" xml (ce n'est ni un flux, ni un fichier...) . Toute action entraine une modification de cet arbre local et est donc immédiate. La synchronisation entre l'arbre local et les données serveur peuvent se faire en tâche de fond. Il n'y a jamais aucun rafraichissement de l'application. L'étoile change de couleur grâce au DOM (d'où l'impression de rapidité).

Comment ca marche ?

La connexion est différente sous Internet Explorer et FireFox. Le plus de l'utilisation du XmlHttpRequest est sans aucun doute la possibilité d'utiliser une communication asynchrone entre le client et le serveur.

Les différentes valeurs de la variable readyState :

  • 0 : non initialisé
  • 1 : les données ont commencé à être transférées
  • 2 : les données sont transférées
  • 3 : les données sont partiellement exploitables sur le client
  • 4 : les données sont totalement exploitables

Exemple (dans une autre page):

Des utilisations du XmlHttpRequest :