Zend FR

Consultez la FAQ sur le ZF avant de poster une question

Vous n'êtes pas identifié.

#1 21-09-2009 16:23:29

supertino7
Membre
Date d'inscription: 21-02-2009
Messages: 113

Autocomplétion avec JQuery

Bonjour,

je tente actuellement d'implémenter une autocomplétion sur un de mes champs de formulaire, en utilisant le plugin Autocomplete.
Il n'y a aucun tutorial suffisamment concret sur le web, en utilisant le format Json, j'en appelle donc à votre aide, amis du ZF.

Tout d'abord, voici par exemple le retour que j'obtiens de mon controller

Code:

{"module":"default","controller":"inscription","action":"societelist","liste":{"669":"CERCLE SAINT PIERRE LIMOGES BASKET ELITE","2266":"SPORT PLUS CONSEIL ET ORGANISATION LIMOGES","2862":"MAIRIE DE LIMOGES","3794":"USAL RUGBY LIMOGES SASP"}}

Comme vous pouvez le voir, mon tableau de données se trouve dans "liste".
Ce que je veux obtenir au final, c'est que les noms s'affichent dans la liste d'autocomplétion, et qu'à la selection d'une option un champs hidden prenne automatique l'id de cette option.

Malheureusement, je me tire les cheveux dessus depuis Dimanche.
Voici mon code JS

Code:

var Liste = new Array();
$.ajax({
      type: "POST",
      url: "/inscription/societelist",
      async: true,
      dataType: "json",
      data: { format: "json" }, // Aucune donnée envoyée
      
      success: function(retour){
         
         Liste = retour.liste;
         
      }
   });

   $("input#societe").autocomplete(Liste);

Alors j'ai tout testé pour débugguer. Et l'une des seules méthodes qui marche, c'est la suivante :

Code:

var Liste = new Array();
Liste[0] = "Societe 1";
Liste[1] = "Societe 2";
Liste[2] = "Societe 3";
 
$("input#societe").autocomplete(Liste);

C'est à dire, dés lors que le tableau de données se trouve numéroté à partir de l'index 0. Ce qui n'est pas le cas de mon retour en JSON puisque les id sont ceux qui sortent de la base de données.
Alors bien sur, il y a pleins de manières de faire, dont celle de renseigner le tableau de données dans un paramètre "list", mais AUCUNE ne marche chez moi

Merci d'avance pour votre aide, parce que je commence à avoir mal au crâne sad

Hors ligne

 

#2 22-09-2009 09:29:11

Mr.MoOx
Administrateur
Lieu: Toulouse
Date d'inscription: 27-03-2007
Messages: 1444
Site web

Re: Autocomplétion avec JQuery

Ceci n'a rien avoir avec le Zend Framework, c'est un problème Javascript tout simplement.
Tu active ton autocomplete alors que ta requete ajax n'est pas terminé.
Il faut que tu instancie ton Autocompleter dans le retour ajax

Code:

$.ajax({
      type: "POST",
      url: "/inscription/societelist",
      async: true,
      dataType: "json",
      data: { format: "json" }, // Aucune donnée envoyée
      
      success: function(retour){
         
           $("input#societe").autocomplete(retour.liste);
         
      }
   });

//ici ton success n'est pas encore terminé car tu as une requete ajax asynchrone (async: true)

Je te conseille de faire ainsi, et de ne pas faire une requete synchrone (bloquante) car pendant ce temps, aucun javascript ne peut être executé.

EDIT : Petite remarque, si tu fais une requête sans envoyer de donné pour recupérer un lot de donné complet (donc pas réellement dynamique) pas besoin de faire de l'ajax !
Par exemple je vais coder une autompletion pour les villes à partir des codes postaux, pour cela j'embarque un fichier json comme un <script> qui contient {'{cp}': {'ville', 'ville2'}...} et je n'ai donc pas besoin de requete ajax.

Dernière modification par Mr.MoOx (22-09-2009 09:32:36)

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