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

JavaScript Discussion :

Rafraichir une liste déroulante


Sujet :

JavaScript

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Enseignant
    Inscrit en
    Novembre 2018
    Messages
    184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Novembre 2018
    Messages : 184
    Par défaut Rafraichir une liste déroulante
    Bonjour,


    J'ai développé une application cartographique pour indexer des photos. L'édition des données des photos se fait via un formulaire qui comporte une liste déroulante (en l’occurrence la collection).
    J'ai une fonction JS qui peuple cette liste déroulante (select) avec une API et un appel AJAX.

    Le problème est que bien que je fasse appel à cette fonction au moment de la validation du formulaire, la liste déroulante ne se rafraîchit pas. L'appel à l'API est exécuté comme il faut mais la liste déroulante n'est pas MAJ. Une purge du cache règle le problème, mais c'est pénible de rafraîchir systématiquement la page.

    Quelqu'un aurait une piste pour régler ce pb ?

    Merci pour vos retours

    Sylvain

  2. #2
    Membre expérimenté
    Homme Profil pro
    Webdesigner
    Inscrit en
    Juin 2014
    Messages
    464
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 65
    Localisation : France, Hautes Pyrénées (Midi Pyrénées)

    Informations professionnelles :
    Activité : Webdesigner
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Juin 2014
    Messages : 464
    Par défaut
    Citation Envoyé par sylvain257 Voir le message
    L'appel à l'API est exécuté comme il faut mais la liste déroulante n'est pas MAJ
    Quel est la réponse de l'ajax et qu'est ce que tu en fais (donne-nous le code) ?
    merci.

  3. #3
    Membre confirmé
    Homme Profil pro
    Enseignant
    Inscrit en
    Novembre 2018
    Messages
    184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Novembre 2018
    Messages : 184
    Par défaut
    Voila la fonction qui peuple la liste déroulante.

    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
     function SelectCollection(){; 
      $.ajax({
        url: ******,
        type: 'GET',
        datatype: 'json',
        complete: function(res) {
            var record = res.responseJSON.records;
     
            i=0;
            for(i=0;i<record.length;i++){
     
              $('#id_select_collection').append($('<option>').html(record[i].nom_collection).val(record[i].id));
     
            }
          }
        })
      }
    et le retour JSON : (je ne peux pas partager l'url d'appel à l'API)

    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
    {
        "total": 3,
        "records": [
            {
                "id": 1,
                "nom_collection": "Collection Dupond",
                "nb_doc": 1155
            },
            {
                "id": 2,
                "nom_collection": "Collection Martin",
                "nb_doc": 14
            },
            {
                "id": 3,
                "nom_collection": "Collection François Gilbert",
                "nb_doc": null
            }
        ]
    }
    MAJ : Pour information, le formulaire se situe dans une modale Materialize.... Il est possible que cela ait une importance

    Merci :-)

  4. #4
    Expert confirmé Avatar de Toufik83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    2 524
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Maroc

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

    Informations forums :
    Inscription : Janvier 2012
    Messages : 2 524
    Par défaut
    Bonjour,

    Il faut supprimer le contenu du <select> avant la boucle à chaque fois qu'il y'a une réponse ajax :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    $('#id_select_collection').html("");//ici
    for(i=0;i<record.length;i++){
       ....
    }
    $.append rajoute du HTML au <select>, mais elle n'efface pas le contenu précédent.

  5. #5
    Membre confirmé
    Homme Profil pro
    Enseignant
    Inscrit en
    Novembre 2018
    Messages
    184
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Enseignant

    Informations forums :
    Inscription : Novembre 2018
    Messages : 184
    Par défaut
    OK. Et comment faire pour garder la valeur courante du select ? (par ce que la donnée est nulle par défaut, mais c'est normalement un champ renseigné...)
    Merci

  6. #6
    Expert confirmé Avatar de Toufik83
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Janvier 2012
    Messages
    2 524
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : Maroc

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

    Informations forums :
    Inscription : Janvier 2012
    Messages : 2 524
    Par défaut
    Tu peux forcer la valeur du select en utilisant la valeur du champ renseigné après la boucle for comme suite :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    for(i=0;i<record.length;i++){
       ....
    }
    $('#id_select_collection').val("valeur renseignée...");

Discussions similaires

  1. code pour rafraichir une liste déroulante
    Par morgane32 dans le forum VBA Access
    Réponses: 5
    Dernier message: 02/09/2008, 17h06
  2. rafraichir une liste déroulante
    Par super-java dans le forum Langage
    Réponses: 8
    Dernier message: 21/08/2008, 13h51
  3. Réponses: 3
    Dernier message: 01/02/2008, 13h29
  4. rafraichir une liste déroulante
    Par Manu59410 dans le forum VBA Access
    Réponses: 4
    Dernier message: 29/08/2007, 16h03
  5. rafraichir une liste déroulante
    Par zola dans le forum Général JavaScript
    Réponses: 26
    Dernier message: 27/04/2006, 16h34

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