Bonjour,
Sur une page qui affiche les data d'un client j'ai une liste déroulante.
Je veux que la page se synchronise sur le client sélectionné avec la liste.
L'événement change de la combo est intercepté dans une fonction jQuery.
Une requête Ajax est émise vers le contrôleur, qui doit retourner les data du client pour mettre à jour la page.
Le gestionnaire d'événement Jquery est le suivant:
A l'autre bout, la partie du contrôleur qui traite la requête est la suivante:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 $("#cboSelClient").change(function(){ var id=$(this).val(); $.getJSON( 'http://localhost/symfony_master/web/app_dev.php/comptoir/voirClient/'+id, function(data){ $.each(data, function(name, value){ alert(value); }); } ); });
Avec la fonction qui encode l'objet en Json:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12 public function showClientAction(Client $client){ // si c'est une requête ajax... $request=$this->getRequest(); if( $request->isXmlHttpRequest() ){ // encode $client to json format $userDataAsJson = $this->encodeUserDataToJson($client); // rend la réponse return new response(json_encode($client)); }//if requête AJAX ----- reste de la fonction
Problème: l'argument data de la fonction callback jQuery contient une chaine de caractères:
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15 private function encodeUserDataToJson(Client $client) { $userData = array( 'id' => $client->getId(), 'societe' => $client->getSociete(), 'contact' => $client->getContact(), 'adr1' =>$client->getAdr1(), 'adr2'=>$client->getAdr2(), 'ville'=>$client->getVille(), 'cp'=>$client->getCp() ); $jsonEncoder = new JsonEncoder(); return $jsonEncoder->encode($userData, $format = 'json'); }
"{"id":1,"societe":"Linceo Informatique","contact":"Philippe PONS","adr1":"184 BD VOLTAIRE","adr2":"1er \u00e9tage","ville":"Paris","cp":"75011"}"
Ca ressemble à un objet, mais c'est une chaine de caractère! Impossible d'extraire les valeurs des propriétés!
Si quelqu'un à une idée, je suis preneur…
Merci d'avance.
Philippe
Partager