− Table des matières
JSON est un format de données qui réutilise des éléments syntaxiques de Javascript. Cela facilite alors grandement l'utilisation de contenu en JSON dans une page HTML. C'est de plus en plus utilisé pour la technique AJAX.
Pour envoyer un contenu en JSON au navigateur, vous pouvez employer la réponse jResponseJson
dont l'alias est "json". Vous n'avez ensuite qu'à mettre n'importe quelles données dans la propriété $data
.
$rep = $this->getResponse('json');
$rep->data = array( 'nom'=>'dupont', 'prenom'=>'jean');
return $rep;
L'appel du côté client, se fait de la même façon que la technique AJAX
http = new XMLHttpRequest();
// url est une variable qui contient l'url correspondante à l'action ajax
http.open("post", url, true);
// handleJSONReturn est une fonction qui traite la réponse
http.onreadystatechange = handleJSONReturn;
// la requête est envoyée
http.send(null);
Avec jQuery :
$.getJSON( url, function (json) {
// ici traitement de la réponse
}
Vous recevrez alors côté client, ceci :
"{ nom:'dupont', 'prenom':'jean'}"
Lors du traitement du côté client vous pouvez utiliser la méthode suivante :
var doc = eval('(' + http.responseText + ')');
alert(doc.nom + ' ' + doc.prenom);
ou, avec jQuery :
$.getJSON( url, function (json) {
alert(json.lastname + ' ' + json.firstname);
}
Exemple d'utilisation avec une DAO ¶
$countryDao = jDao::get('common~country');
$countries = $countryDao->findAll();
$response = $this->getResponse('json');
$response->data = array();
foreach($countries as $country) {
$response->data[] = array('id' => $country->id , 'name' => $country->name);
}
On récupère côté client des objets en notation JSON comme celui-ci :
{ "id":20, "name":"Europe"}