Consultez la FAQ sur le ZF avant de poster une question
Vous n'êtes pas identifié.
Pages: 1
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
{"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
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 :
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
Hors ligne
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
$.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
Pages: 1