− 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.
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 :
var http = new XMLHttpRequest();
// url est une variable qui contient l'url correspondante à l'action ajax
http.open("post", url, true);
http.onreadystatechange = function(){
if(http.readyState == 4){
// récupération du contenu renvoyé par votre action
var json = http.responseText;
var value = JSON.parse(json);
// ici traitement des données.
}
};
// la requête http est envoyée
http.send(null);
Avec jQuery, c'est plus simple :
$.getJSON( url, function (json) {
// ici traitement de la réponse
}
Avec notre exemple, vous recevrez côté client, ceci :
"{ nom:'dupont', 'prenom':'jean'}"
Ce qui peut donner, avec jQuery :
$.getJSON( url, function (json) {
alert(json.lastname + ' ' + json.firstname);
}
Exemple d'utilisation avec une DAO ¶
Dans votre contrôleur :
$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"}