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 :

[jqGrid] Remplir une liste déroulante par AJAX ? [Plugin]


Sujet :

jQuery

  1. #1
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2013
    Messages
    90
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2013
    Messages : 90
    Points : 69
    Points
    69
    Par défaut [jqGrid] Remplir une liste déroulante par AJAX ?
    Bonjour à tous,

    Je viens vers vous pour un petit soucis qui me prend un petit peu la tête depuis ce matin. En fait, via une requête AJAX j'aimerais pouvoir remplir une liste déroulante qui se trouve dans une cellule d'un tableau jqGrid. Au niveau du code propre à jqGrid pour afficher et remplir la liste via une liste que je fais en dur j'ai pas de problème.

    Le soucis arrive avec l'ajout de l'AJAX pour remplir cette liste, je récupère bien tout ce que je veux comme je veux, mais dans ma boucle each pour remplir la liste, ça ne fonctionne juste pas je sais pas pourquoi... Tant que je suis dans la boucle la liste se rempli bien, mais une fois en dehors, la liste est vidée je ne sais pas pourquoi... Si quelqu'un pouvait m'éclairer sur le sujet ça serait cool

    Construction de la liste :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    function getDomains(){
    	var domainValues = '{';
    	$.getJSON("ajax/load/domainValues", function(data) {
    		$.each(data, function(key, val) {
    			domainValues += (key + 1) + " : '" + val.name + "', ";
    		});
    	});
    	domainValues += '}';
    	return domainValues;
    }
    Le problème avec le résultat afficher dans des alert:
    - avant l'AJAX, j'ai bien "{" comme résultat.
    - Une fois dans la requête (juste avant la boucle), j'ai "{}" je sais pas pourquoi
    - Dans la boucle, j'ai "{} 1 : 'valeur', 2 : 'valeur', ..."
    - Une fois sortis de la boucle j'ai "{}"

    Je comprend pas comment ça peut être possible un truc pareil, merci de m'éclairer

    Dans la création de mon tableau, je crée ma liste ainsi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    edittype : 'select',
    	formatter : 'select',
    	editoptions : { 
    	value : getDomains()
    }

  2. #2
    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
    ça ne fonctionne juste pas je sais pas pourquoi...
    Probablement à cause de ça : Un classique AJAX : utiliser les données au bon moment !

    D'autre part, c'est pas comme ça qu'on construit un objet JSON...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    var obj = {
        foo: 'bar',
        toto: 'tata'
    };
    alert(JSON.stringify(obj));
    alert(JSON.parse(JSON.stringify(obj)));
    Si tu regardes la différence entre l'objet initial et l'objet JSON, tu remarqueras la syntaxe très figée d'un objet JSON.

  3. #3
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2013
    Messages
    90
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2013
    Messages : 90
    Points : 69
    Points
    69
    Par défaut
    Bonjour,

    Désolé de répondre si tardivement, pas trop eu le temps cette semaine :p

    Utilisé les données au bon moment je suis d'accord, ce que je ne comprend pas c'est que ma variable définie avant la requête est vide une fois qu'elle sort de la fonction Ajax, alors que dedans je lui donne toutes les infos nécessaires. De plus, j'ai pas besoin de toutes les infos qui sont dispos dans le Json, juste le nom et une clé.

    Ce n'est pas non plus une réponse Json que j'essaye de construire (enfin je crois), mais une réponse que jqGrid comprend pour construire la liste déroulante. Mais j'ai quand même essayer des choses au cas où ça serait du Json.

    J'ai essayer les 2 choses suivante, mais le résultat est pratiquement identique :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    function getDomains(){
    	var domainValues = '';
     
    	$.getJSON('ajax/load/domainValues', function(data) {
    		domainValues = JSON.stringify(data);
    	});
     
    	alert(domainValues);
     
    	return domainValues;
    }
    => Ici domainValues est tout simplement vide à l'alert

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    function getDomains(){
    	var domainValues = '';
     
    	$.getJSON('ajax/load/domainValues', function(data) {
    		domainValues = JSON.stringify(data);
     
    		alert(domainValues);
     
    		return domainValues;
    	});
    }
    => Ici domainValues possède les bonnes infos, mais au return ça me donne une liste vide dans ma jqGrid

    Partie de ma jqGrid pour la liste déroulante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    name : 'domainValueClassname', 
    	editable : true, 
    	width : 150,
    	edittype : 'select',
    	formatter : 'select',
    	editoptions : { 
    		value : getDomains()
    	}

  4. #4
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2013
    Messages
    90
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : Belgique

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2013
    Messages : 90
    Points : 69
    Points
    69
    Par défaut
    Problème résolu en utilisant la propriété buildSelect de jqGrid

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [MySQL] Remplir une liste déroulante en utilisant AJAX et PHP
    Par alfred5 dans le forum PHP & Base de données
    Réponses: 2
    Dernier message: 28/01/2015, 01h14
  2. [AJAX] Remplir une liste déroulante avec la réponse du réquête d'Ajax
    Par duppp2000 dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 05/12/2007, 17h28
  3. Réponses: 12
    Dernier message: 28/11/2006, 16h34
  4. Remplir une liste déroulante à partir d'un champ dans une pop up
    Par wiam26 dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 23/08/2006, 17h42
  5. [débutant] Remplir une liste déroulante
    Par Floch dans le forum Général JavaScript
    Réponses: 7
    Dernier message: 12/05/2006, 14h39

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