Fév
09
JSON
Le JSON, vous ne savez sûrement pas ce que c’est, enfin jusqu’à aujourd’hui. Cela veut dire : « Javascript Object Notation ». En clair, c’est un format de données structurées qui est notamment utilisé en Ajax pour échanger des données entre le client et le server. Le JSON permet d’adopter un format commun entre le client et le server ce qui fait qu’ils arrivent à se comprendre.
Le problème, c’est que c’est assez peu documenté. Cependant, si vous voulez passer des tableaux du client au server ou du server au client dans le cadre d’une application web javascript avec un server php, vous allez avoir du mal à vous en passer.
Je vais donc vous donner quelques pistes côté client et côté server pour vous familiariser avec le JSON et éviter les pièges dans lesquels je suis tombé et où j’ai perdu de nombreuses heures avant de comprendre ce qui se passait car forcément, debugger de l’ajax côté php, c’est pas très facile.
Alors commençons par la voie client vers server. Imaginons que notre utilisateur remplit une table qu’il va poster en ajax pour traitement par le server. Tout d’abord, il faut « jsonifier » le tableau (néologisme pour indiquer que l’on encode la table en format json). Pour cela, c’est très simple, on fait un petit appel à la fonction JSON.stringify avec comme paramètre l’id de notre tableau. Il nous retourne le tableau stringifié! La page de Wikipedia sur le JSON vous donne une idée du format en question. En gros, c’est du style {« key »: »value », »key »: »valeur »} avec des imbrications possibles si vous utilisez un tableau multidimensionnel. On envoie ensuite la table en ajax avec un post au server qui la récupère et là ouvrez en grand vos yeux, j’ai passé trois heures avant de comprendre ce qui se passait, il faut appliquer un stripslashes sur le tableau côté server sinon le json_decode vous renvoit un tableau vide! Voici le bout de code :
$tableau = json_decode(stripslashes($_POST[tableau]));
Voilà, maintenant, vous savez comment récupérer le tableau, il est alors formaté correctement pour être exploité par le server.
Mais quid de l’autre sens? Et bien c’est à peu près pareil. On commence par encoder notre tableau avec json_encode et on le balance au client avec un echo. Voici le bout de code :
$result = array('success' => "TRUE", 'erreur' => "Tout va bien!");
echo json_encode($result);
Puis on récupère dans la fonction de résultat du call Ajax le tableau jsonifié avec un eval comme suit :
var tableau = eval('(' + ajaxres + ')');
Et voilà, vous savez à présent comment échanger des données complexes entre le client et le server en Ajax grâce au JSON! Dernier point, pour utiliser la fonction stringify, je vous recommande de télécharger le script json2.js.
Retour au sommaire du dossier sur l’écriture d’un plugin wordpress |
Tu as un nouveau « lecteur » fidèle avec boris alias le blogueur masqué 🙂
Je sais, il est connu comme le loup blanc dans la blogosphère 🙂
Merci pour les explications tres claires