Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Pages: 1
bonjour a tous je demande votre aide comme dernier secours sa fait plus de 2 semaines que j'essaie de résoudre se problème j'ai tout essayé sans succès , je voudrais après changement du premier select ville que le deuxième select quartier change en les quartier se trouvant dans la ville choisie , j'ai fait comme ceci mais j'ai toujours undefined apres changement de ville , SVP SVP aidez moiiiii
dans mon controlleur :
public function init() { $this->_helper->ajaxContext->addActionContext('getdata', 'json') ->initContext(); } public function getdataAction() { $this->_helper->layout->disableLayout(); $ville = $this->_getParam('id'); $quarter = new Quarter(); $list=$quarter->getQuarter($ville); $this->view->reponseAjax = Zend_Json::encode($list); }
dans mon getdata.phtml
<?php echo $this->reponseAjax ;?>
dans mon index.phtml :
<script type="text/javascript"> $(document).ready(function () { $("select#ville").change(function () { var quarter = $.ajax({ async : false, dataType : "json", url:"/frontend/index/getdata/id/" + $("select#ville").val() + "/format/json", evalScript:true }).responseText; var options = ''; for( var i = 0; i < quarter.length; i++) { options += '<option value="' + quarter[i].valeur + '">' + quarter[i].choix + '</option>'; } $("select#quarter").empty(); $("select#quarter").append(options); }); }); </script>
dans mon model quarter :
public function getQuarter($id) { $select = $this->select(); $select->from($this) ->where('quarter.City_cityId = '.$id) ; $rows=$this->fetchAll($select); $options = array(); foreach ($rows as $row) { $options[$row->id] = $row->name; } return $options; }
SVP aidez moi je ne sais plus quoi faire
Dernière modification par nathalie90 (15-06-2012 11:53:24)
Hors ligne
Bonjour,
tiens, c'est rigolo, j'ai fait ça juste ce matin.
voilà en gros ce que ça fait dans mon cas :
(à noter : pas de fonction init dans le controller, et pas de phtml pour getdataAction)
public function getdataAction() { // pas de .phtml $this->_helper->viewRenderer->setNoRender(true); // pas de layout autour $this->_helper->layout()->disableLayout(); $model = new My_Model(); $data = $model->getQuartier($this->_request->getParam('ville')); $this->_response->setHeader('Content-Type', 'application/json')->setBody(Zend_Json_Encoder::encode($data)); }
<script type="text/javascript"> $(document).ready(function(){ $("#ville").change(function(){ $.getJSON('/frontend/index/getdata/ville/' + $(this).val(),function(data){ var items=[]; $.each(data, function(key, val) { items.push('<option value="' + key + '">' + val + '</option>'); }); $('#quartier').empty().append(items.join('')); }); }); }); </script>
Hors ligne
tout d'abord merci pour ta réponse , j'ai essayé ton exemple mais malheureusement rien ne se passe après changement de ville ,as tu une idée de la raison , est ce que sa peut être du $.getJSON ??
Hors ligne
- si tu essayes déjà d'appeler dans un onglet à part, directement, l'url de /frontend/index/getdata/ville/boston, est-ce que tu récupères bien le json que tu veux ?
- si c'est ok, alors le problème est du côté javascript dans ton formulaire, et il va falloir débugguer avec les outils kivontbien comme firebug : pas d'ereur javascript ? quelle est la réponse de getJson ? code http 200 ?
- est-ce qu'il n'y a pas un bête pb de nommage des champs? <select id="quartier">.... etc.
ça doit être un truc tout bête, parce que là, c'est du code pas compliqué. Mais il faut que tu puisses nous dire si ton erreur se situe côté client ou serveur
Hors ligne
c'est l'url qui pose problème je crois quand je met directement l'url dans un onglet il me donne error , l'erreur ne se résolut qu’après mettre le contenu de getdataAction en commentaire , donc je crois l'erreur vient du getdataAction mais j'en suis pas sur a 100 %
c'est cette ligne d'ou vient l'erreur
$data = $model->getQuarter($this->_request->getParam('ville'));
Dernière modification par nathalie90 (15-06-2012 15:41:47)
Hors ligne
sa y est j'ai résolue mon problème et c'est vraiment un truc banaaal qui m'a fait perdre 2 semaines de boulot , dans mon model quand je récupère le id et le quarter description , j'ai id et name alors que moi dans ma BD j'ai quarterId et quarterDescription , merci pour ton aide j'apprécie bcp
Hors ligne
Pages: 1