Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 03-01-2010 15:44:09

zebulon
Nouveau membre
Date d'inscription: 03-01-2010
Messages: 6

[Resolu][Ajax, JQuery] Remplir en AJAX un element SELECT

Bonjour

Dans un formulaire, j'ai 2 champs : Un 1ier champ dans lequel je saisis un code postal, puis un 2nd champ de type SELECT dans laquelle je fais le choix d'une commune correspondante au code postal saisi précédement.
(Il y a en effet 36569 communes en france pour seulement 5962 codes postaux...)

Je souhaite que tout changement dans le 1ier champ Code Postal mette à jour dynamiquement la liste de choix dans le second champ de type SELECT.
je tente d'utiliser AJAX, JQUERY et JSON.

Mon code ne fonctionne pas : Au final, mon champ SELECT se remplit avec des "undefined" partout : exemple
    <select id="codeCommune" name="codeCommune">
        <option value="undefined">undefined</option>
        <option value="undefined">undefined</option>
        <option value="undefined">undefined</option>
        <option value="undefined">undefined</option>
        <option value="undefined">undefined</option>

Qui peut m'aider à identifier mon erreur ?
Voici mon code ci dessous.       
   
*** Script JQUERY dans ma page HTML contenant le formulaire :
$(document).ready(function () {
    var urlmonsite = "http://localhost/monsite";

    $("input#codePostal").change(function () {
        var listeCommunes =
            $.ajax({
                async : false,
                dataType : "json",
                url: urlvg + "/ajax/communes/cp/" + $("input#codePostal").val() + "/format/json",
            }).responseText;
        var options = '';
        for( var i = 0; i < listeCommunes.length; i++) {
            options += '<option value="' + listeCommunes[i].valeur + '">' + listeCommunes[i].choix + </option>';
        }
        $("select#codeCommune").append(options);
    })

});

*** Fichier controleur AJAX : ajaxController.php
<?php
class ajaxController extends Zend_Controller_Action
{
    /**
     * Initialisation
     */
    public function init()
    {
        $this->_helper->layout->disableLayout();
    }

    /**
     * Retourne la liste des communes correspondant à un code postal donné, au format JSON
     */
    public function communesAction()
    {
        // ici je vais chercher la liste des communes en fonction du code postal envoyé
        // le résultat est un ARRAY identique à :
        // $listeCommunes = array(
        //        array("valeur" => "35236", "choix" => "Redon"),
        //        array("valeur" => "35013", "choix" => "Bains-sur-Oust"),
        //        array("valeur" => "35294", "choix" => "Sainte-Marie")
        // )
   
        $this->view->reponseAjax = Zend_Json::encode($listeCommunes);
           
    }
}

*** Vue du controleur AJAX :
<?php
echo $this->reponseAjax;

Merci

Dernière modification par zebulon (07-01-2010 00:29:43)

Hors ligne

 

#2 05-01-2010 00:08:50

zebulon
Nouveau membre
Date d'inscription: 03-01-2010
Messages: 6

Re: [Resolu][Ajax, JQuery] Remplir en AJAX un element SELECT

Personne pour me donner un coup de main ... l'année commence mal.

Pour simplifier et après avoir avancé un peu :

Mon controleur AJAX  (ajaxController.php) retourne une réponse.

Selon firebug celle-ci ressemble à un tableau en notation JSON tel que celui-ci :


Code:

[{"codeCommune":"35013","nomCommune":"BAINS-SUR-OUST"},{"codeCommune":"35236","nomCommune":"REDON"},{"codeCommune":"35294","nomCommune":"SAINTE-MARIE"}]

Tout semble être ok.

L'en-tête adressée avec cette réponse est :

Code:

Date    Mon, 04 Jan 2010 22:52:06 GMT
Server    Apache/2.2.11 (Win32) PHP/5.2.9
X-Powered-By    PHP/5.2.9
Expires    Thu, 19 Nov 1981 08:52:00 GMT
Cache-Control    no-store, no-cache, must-revalidate, post-check=0, pre-check=0
Pragma    no-cache
Content-Length    173
Keep-Alive    timeout=5, max=99
Connection    Keep-Alive
Content-Type    text/html
Requête
Host    localhost
User-Agent    Mozilla/5.0 (Windows; U; Windows NT 6.0; fr; rv:1.9.1.6) Gecko/20091201 Firefox/3.5.6 (.NET CLR 3.5.30729)
Accept    application/json, text/javascript, */*
Accept-Language    fr,fr-fr;q=0.8,en-us;q=0.5,en;q=0.3
Accept-Encoding    gzip,deflate
Accept-Charset    ISO-8859-1,utf-8;q=0.7,*;q=0.7
Keep-Alive    300
Connection    keep-alive
X-Requested-With    XMLHttpRequest
Referer    http://localhost/vg/manifestation/soumettre
Cookie    PHPSESSID=m4h9ikk572ura03n5abimim995

Par contre, il semble que mon script jQuery soit incapable de traiter la réponse JSON. Le parcours avec un FOR(...){...} est impossible ; et la longueur de la réponse ne donne pas le nombre d'élément dans le tableau, mais un nombre de caractères...

Ou ai-je loupé un truc ?

A l'aide, merci

PS : je m'excuse de n'avoir pas utilisé les BBCodes dans mon premier post.

Hors ligne

 

#3 05-01-2010 09:31:22

Ithier
Membre
Date d'inscription: 05-01-2010
Messages: 85

Re: [Resolu][Ajax, JQuery] Remplir en AJAX un element SELECT

Bonjour,

J'utilise pas mal l'ajax avec Zend et je n'ai pas de souci. Ta réponse a l'air correcte, je pense donc aussi que ton problème provient de ton utilisation de jQuery.
Je n'ai jamais utilisé la fonction $.ajax, je préfère la fonction dédiée $.getJSON:

Code:

   $.getJSON(url, function(data) 
    { 
         for( var i = 0; i < data.length; i++) 
        {
             alert (data[i].valeur);
        }
    });

Voila un exemple de code qui fonctionne chez moi.
Bon courage.

Hors ligne

 

#4 07-01-2010 00:29:23

zebulon
Nouveau membre
Date d'inscription: 03-01-2010
Messages: 6

Re: [Resolu][Ajax, JQuery] Remplir en AJAX un element SELECT

Merci pour cette réponse

j'ai résolu le pb en utilisant un eval() sur ma réponse AJAX.

Cordialement,

Hors ligne

 

Pied de page des forums

Propulsé par PunBB
© Copyright 2002–2005 Rickard Andersson
Traduction par punbb.fr

Graphisme réalisé par l'agence Rodolphe Eveilleau
Développement par Kitpages