AJAX[1] est une méthode permettant d'envoyer des requêtes en arrière-plan à un serveur, généralement en vue d'obtenir des données en réponse...

Et qui dit données dit format de données... Voire même, comme ici, format d'échange de données.

XML vs JSON

De par la définition même d'AJAX, le format d'échange de données utilisé à l'origine pour les requêtes Ajax est le XML.

XML

XML présente de nombreux avantages, dont :

  • C'est un format texte, donc, lisible par n'importe qui - contrairement à un format binaire, qui nécessite un logiciel de décodage.
  • C'est un format structuré : les données peuvent être imbriquées, pour former des schémas complexes, à même de répondre à la plupart des besoins.
  • C'est un format largement répandu : il est possible de créer, lire, et manipuler un document XML dans le très nombreux langages.
  • C'est un format ouvert : sa spécification est librement accessible par tous.

Mais créer un document XML est complexe et lourd... De même que le lire par la suite.
Souvenez-vous de l'exemple que j'avais donné à propos de la propriété responseXML de l'objet XMLHttpRequest...

JSON

D'un autre côté, lorsque nous utilisons de l'Ajax pour échanger des informations entre un script côté client et un serveur, le script côté client est généralement programmé en JavaScript... Alors, pourquoi ne pas employer un format de données plus facilement utilisable en JavaScript ?

Ce qui compte, finalement, c'est de conserver les avantages que nous avons présenté plus haut pour le XML.


Pour information, voici quelques liens traitant de "JSON vs XML" :

Quelques rappels concernant JSON

Pour commencer, je vous conseille de jeter un coup d'oeil sur mon article "JSON - JavaScript Object Notation : Présentation", qui vous permettra de comprendre ce qu'est JSON, en insistant sur la notion de JSON valide.

En résumant très rapidement, JSON est un format que l'on peut utiliser pour représenter des objets sous forme d'une chaîne de caractères, en utilisant une notation compatible avec JavaScript.

Les types de données que JSON accepte sont numérique (18, 45.25), chaînes de caractères ("Hello World!"), booléens (true, false), tableaux, objets, et null.
Attention : les chaînes de caractères doivent être entourées de guillemets doubles.

Pour vous assurer de la validité d'une chaîne JSON avant de l'évaluer, vous pouvez utiliser le code suivant :

var monObjet = !(/[^,:{}\[\]0-9.\-+Eaeflnr-u \n\r\t]/|>.test(
             text.replace(/"(\\.|[^"\\])*"/g, ''))) &&
         eval('(' + text + ')');