IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

jQuery Discussion :

[JQuery] Autocomplete, du mal avec Json


Sujet :

jQuery

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    124
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 124
    Points : 57
    Points
    57
    Par défaut [JQuery] Autocomplete, du mal avec Json
    Bonjour,

    je bosse sous Zend Framework, et j'ai un peu de mal à implémenter le plugin Autocomplete, qui je trouve manque relativement de tutoriels simples à assimiler.

    Voici mon fichier JS :

    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
    16
    17
    18
    19
    20
    21
     
    $(document).ready( function() {....
     
    // Liste contiendra la liste de toutes les sociétés
    	var Liste = new Array();
     
    	// On charge la liste de toutes les sociétés, retourné en JSON
    	$.ajax({
    		type: "POST",
    		url: "/inscription/listeSociete",
    		async: true,
    		dataType: "json",
    		data: { format: "json" }, // paramètre envoyé pour activer le context Ajax.
     
    		success: function(data){
    			Liste = data.liste;
                            console.log(data.liste);
    		}
    	});
     
    	$("input#societe").autocomplete(Liste);
    Tout marche bien jusque là,
    data est un retour en Json produit par le Zend Framework qui ressemble à ça :

    {"module":"default","controller":"inscription","action":"listeSociete","liste":{"1" : "societe1", "2" : "societe2", "3" : "societe3" ....}

    Pour extraire societe, je fais donc un Liste = data.liste.

    Et j'assigne cette liste dans l'option de .autocomplete()

    Voila. Ca ne marche malheureusement pas, comme on a pu s'en douter.
    Alors je me demande si j'aurai pas oublié quelquechose, un paramètre ou une fonction dans l'Autocomplete ?

    Merci par avance pour votre aide.

    Merci pour votre aide.

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    124
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 124
    Points : 57
    Points
    57
    Par défaut
    Pour avancer un peu dans mon schmilblick,

    j'ai tenté de convertir le tableau d'objet data.liste en tableau tout court, en faisant un

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
     
    success: function(data){
     
    			$.each(data.liste, function(i,n){
    					Liste[i] = n;		
    			});
     
    			console.log(Liste);
     
    		}
    J'obtiens bien un tableau, mais il n'est pas non plus lu par l'AutoComplete.
    Et bizarrement dans le log j'obtiens plein de row "undefined" [confus]

  3. #3
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    Salut,
    Tu pourrais peut-être commencer par changer le nom du paramètre dans success :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    success: function(retour){
    	Liste = retour.liste;
            console.log(retour.liste);
    }

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Octobre 2008
    Messages
    124
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2008
    Messages : 124
    Points : 57
    Points
    57
    Par défaut
    Citation Envoyé par Bovino Voir le message
    Salut,
    Tu pourrais peut-être commencer par changer le nom du paramètre dans success :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    success: function(retour){
    	Liste = retour.liste;
            console.log(retour.liste);
    }
    Merci.

    Ca ne change rien malheureusement.

    Je comprends vraiment pas ce qu'il lui faut à Autocomplete pour fonctionner.

    En fait, je pense que je viens de comprendre.

    Si je crée un array par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    var Liste = new Array();
    Liste[0] = "Societe 1";
    Liste[1] = "Societe 2";
    Liste[2] = "Societe 3";
     
    $("input#societe").autocomplete(Liste);
    Ca marche très bien.

    Voici les données retournées,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    {"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"}}
    On dirait que ça ne marche pas, car la key (correspondant à l'id de l'item dans la base de données) ne démarre pas à partir de 0.

  5. #5
    Rédacteur

    Avatar de Bovino
    Homme Profil pro
    Développeur Web
    Inscrit en
    Juin 2008
    Messages
    23 647
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 54
    Localisation : France, Gironde (Aquitaine)

    Informations professionnelles :
    Activité : Développeur Web
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2008
    Messages : 23 647
    Points : 91 220
    Points
    91 220
    Billets dans le blog
    20
    Par défaut
    Essaye comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    success: function(retour){
    	var Liste = {};
    	Liste = retour.liste;
            console.log(retour.liste);
    }

Discussions similaires

  1. JQuery Autocomplete avec post et json
    Par sapajou69 dans le forum jQuery
    Réponses: 1
    Dernier message: 18/12/2013, 13h59
  2. jquery autocomplete json
    Par Invité dans le forum jQuery
    Réponses: 0
    Dernier message: 08/07/2011, 12h12
  3. Recherche de type Autocomplete (JQuery ou YUI) combiné avec Select
    Par FrankOVD dans le forum Général JavaScript
    Réponses: 3
    Dernier message: 06/04/2011, 15h51
  4. jQuery autocomplete avec un tableau à id
    Par mLk92 dans le forum jQuery
    Réponses: 7
    Dernier message: 18/08/2010, 16h59
  5. IE fonctionne mal avec Jquery
    Par john2706 dans le forum jQuery
    Réponses: 2
    Dernier message: 07/11/2009, 21h44

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo