Partage
  • Partager sur Facebook
  • Partager sur Twitter

Ajax retourne la précedente valeur selectionnée

    12 juin 2018 à 11:56:45

    Bonjour,

    Je suis encore débutant et je rencontre un petit problème avec ajax.

    J'essaye d'afficher un diagramme en barre (ECharts) en fonction de donnée d'une base de données, après une sélection dans une liste déroulante.
    Tout marche ou presque.
    Je sélectionne un territoire dans une liste déroulante, la requête SQL s'exécute, envoie un json dans l'Ajax, et le diagramme en bar fonctionne, mais :
    Il ne fonctionne que après deux sélections de territoire et n'affiche que les données du précédent territoire sélectionné...
    Voici mon ajax, le problème doit certainement venir de là :

    $territoire.on('change', function() {
            var val = $(this).val(); 
    
        $.ajax({
            url: './php/CSP.php',
            type: 'GET',
            data: 'id_territoire=' + val, 
            dataType: 'json',
            success: function(CSP) {
                  arti      = CSP[0].arti;
                  cadre     = CSP[0].cadre;
                  interme   = CSP[0].interme;
                  employe   = CSP[0].employe;
                  ouvrier   = CSP[0].ouvrier;
            }
        });

    Donc j'aimerais qu'il me charge dans les dernières valeurs selectionnées, et non les valeurs précedentes.

    Merci pour votre aide

    Lacenaire

    • Partager sur Facebook
    • Partager sur Twitter
      12 juin 2018 à 21:21:20

      Bonjour,

      Tu peux mettre le bout de code correspondant à la sélection du territoire stp

      • Partager sur Facebook
      • Partager sur Twitter

      Call me Spaceman

        14 juin 2018 à 18:28:31

        Bonjour,

        J'ai trouvé la solution.

        Il le problème venait de async, qu'il fallait mettre sur false .

        $territoire.on('change', function() {
                var val = $(this).val();
         
            $.ajax({
                url: './php/CSP.php',
                type: 'GET',
                async: false, 
                data: 'id_territoire=' + val,
                dataType: 'json',
                success: function(CSP) {
                      arti      = CSP[0].arti;
                      cadre     = CSP[0].cadre;
                      interme   = CSP[0].interme;
                      employe   = CSP[0].employe;
                      ouvrier   = CSP[0].ouvrier;
                }
            });

        Merci

        • Partager sur Facebook
        • Partager sur Twitter
          21 juin 2018 à 11:23:57

          Bonjour,

          pourquoi ne pas mettre l'appel de tes autres fonctions (le diagramme en barre) dans le "success" de ta méthode $.ajax (ça s'appelle un callback) ? Ainsi tu gardes l'intérêt de l'asynchrone, et tu utilises $.ajax comme ça a été conçu :)

          • Partager sur Facebook
          • Partager sur Twitter

          Pas d'aide concernant le code par MP, le forum est là pour ça :)

            21 juin 2018 à 11:33:46

            Un exemple

            function remplir(val){ 
                NomQueTuVeux(val, function (CSP) {    
                          arti      = CSP[0].arti;
                          cadre     = CSP[0].cadre;
                          interme   = CSP[0].interme;
                          employe   = CSP[0].employe;
                          ouvrier   = CSP[0].ouvrier;
                });
            }
            
            function NomQueTuVeux(val, callback) {
                $.ajax({
                    url: './php/CSP.php',
                    type: 'GET',
                    data: 'id_territoire=' + val,
                    dataType: 'json',
                    success: callback
                });
            }



            • Partager sur Facebook
            • Partager sur Twitter

            Ajax retourne la précedente valeur selectionnée

            × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
            × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
            • Editeur
            • Markdown