Partage
  • Partager sur Facebook
  • Partager sur Twitter

Passer une variable dans une modal après un AJAX

Anonyme
    6 décembre 2018 à 10:36:03

    Bonjour,

    Pour faire clair, j'ai 3 fichiers:

    accueil.php: mon script AJAX qui va charger ma page en fonction d'un élément sélectionné dans une liste.

    getuser.php : la page principale chargée par accueil.php

    condition.php: fenêtre modal accessible depuis un bouton dans la page getuser (donc chargé par l'appel AJAX).

    Je souhaiterai faire passer la variable d'un input de ma page getuser.php vers ma modal condition.php

    Comme AJAX est côté serveur, il faut que je mette mon JS à la sortie de mon script AJAX. Seulement cela ne fonctionne pas.

    Ci-dessous mon code:

    accueil.php

    <script>
    function showUser(str) {
        if (str == "") {
            document.getElementById("txtHint").innerHTML = "";
            return;
        } else {
            if (window.XMLHttpRequest) {
                // code for IE7+, Firefox, Chrome, Opera, Safari
                xmlhttp = new XMLHttpRequest();
            } else {
                // code for IE6, IE5
                xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
            }
            xmlhttp.onreadystatechange = function() {
                if (this.readyState == 4 && this.status == 200) {
                       
                
                $(document).on("click", ".varsociete", function(event) {
                    event.preventDefault();
                    var varsociete = $( "#client_soc" ).val(); 
                    $( "#get_societe" ).val(varsociete);  
                }
            };
            xmlhttp.open("GET","getuser.php?q="+str,true);
            xmlhttp.send();
        }
    }
    </script>

    L'input de getuser.php dont je veux récupérer la variable:

    <input type="text" name="client_societe" id="client_soc" value="<?php echo $donnees['client_societe'] ?>" class="form-control" />

    le bouton qui va ouvrir la modal:

    <button type="button" class="btn btn-success varsociete" data-toggle="modal" data-target="#groupement" >Groupement</button>

    L'input que je voudrai charger (condition.php):

    <input type="text" class="form-control conditions_client" id="get_societe"/>

    Voilà, merci d'avance :)

    -
    Edité par Anonyme 6 décembre 2018 à 10:55:35

    • Partager sur Facebook
    • Partager sur Twitter
      6 décembre 2018 à 10:50:39

      Bonjour,

      Si j'ai bien compris, tout ce passe dans une même page. Donc tu peux déclarer une variable dans ta page, qui contiendras les données qui t'intéressent, charger ton modal et utiliser cette variable pour l'initialiser. Après, je ne sais pas trop ce que tu veux faire avec cette requête, mais elle me semble bizarre.

      • Partager sur Facebook
      • Partager sur Twitter
      Anonyme
        6 décembre 2018 à 10:57:05

        D'accord merci pour ta réponse!

        Oui c'est ce que j'ai tenté de faire : récupérer la valeur de l'input :

        var varsociete = $( "#client_soc" ).val(); 

        J'ai édité mon message, j'ai rajouté mon input sur lequel je récup la valeur :)

        Vois-tu pourquoi mon système bloque? merci

        • Partager sur Facebook
        • Partager sur Twitter
          6 décembre 2018 à 11:21:12

          alors déjà, ta fonction showUser a des erreurs :

          function showUser(str) {
            if (str === '') {
              document.getElementById('txtHint').innerHTML = '';
            } else {
              var xmlhttp;
              if (window.XMLHttpRequest) {
                // code for IE7+, Firefox, Chrome, Opera, Safari
                xmlhttp = new XMLHttpRequest();
              } else {
                // code for IE6, IE5
                xmlhttp = new ActiveXObject('Microsoft.XMLHTTP');
              }
              xmlhttp.onreadystatechange = function() {
                if (this.readyState === 4 && this.status === 200) {
                  $(document).on('click', '.varsociete', function(event) {
                    event.preventDefault();
                    var varsociete = $('#client_soc').val();
                    $('#get_societe').val(varsociete);
                  });
                }
              };
              xmlhttp.open('GET', 'getuser.php?q=' + str, true);
              xmlhttp.send();
            }
          }

          ensuite, quelle est la finalité, parce que là tu fais une requête, mais tu ne fais rien du résultat. AJAX côté serveur c'est étrange.

          • Partager sur Facebook
          • Partager sur Twitter
          Anonyme
            6 décembre 2018 à 17:30:49

            Merci pour ta réponse.

            En effet je n'ai pas déclaré

            var xmlhttp;

            merci de me l'avoir fait remarquer. (et les ' ' à la place de mes " " )

            Ensuite tu as retiré

            document.getElementById("txtHint").innerHTML = this.responseText;

            est-ce volontaire? Car du coup, pas d'affichage.

            Mon appel ajax charge des inputs. Et c'est l'un deux qui contient la valeur que je cherche :

                $requete = "SELECT * FROM client WHERE UPPER(client_societe) = :client_societe";
                $stmt = $bdd->prepare($requete);
                $stmt->bindValue('client_societe',trim(strtoupper($_GET['q'])),PDO::PARAM_STR);
                $stmt->execute();
            
                while( $donnees = $stmt->fetch() ) { ?>
            </head>
            </html>
            
            <form enctype="multipart/form-data" method="post" action="../PHP/Traitement/update_client.php" >
            <div class = "row">
              <div class="pull-left">
                  <table class="table table-bordered table-striped table-condensed">
                        <thead> <!-- En-tête du tableau -->
                            <tr>
                                <th>Préfixe</th>
                                <th>Nom du client</th>
                            </tr>
                        </thead>
                        <tbody> <!-- Corps du tableau -->
                            <tr>
                                <td><input type="text" name="client_prefixe" id="client_prefixe" value="<?php echo $donnees['client_prefixe'] ?>" class="form-control" /></td>
                                <td><input type="text" name="client_societe" id="client_societe" value="<?php echo $donnees['client_societe'] ?>" class="form-control" /></td>
                            </tr>
                        </tbody>
                        </table>


            En voici un extrait.

            Merci d'avance

            -
            Edité par Anonyme 6 décembre 2018 à 17:32:55

            • Partager sur Facebook
            • Partager sur Twitter
              6 décembre 2018 à 17:54:21

              Pour le document.getElementById("txtHint").innerHTML = this.responseText;, il n'y est pas dans ton premier post, et j'ai simplement fait un copier-coller :-° (c'est ce qui me paraissait le plus étrange dans ta requête, ne rien faire avec le résultat).

              entre ' et ", il n'y a aucune différence (c'est le formatage automatique qui s'en occupe)

              function showUser(str) {
                  if (str === '') {
                      document.getElementById('txtHint').innerHTML = '';
                  } else {
                      var xmlhttp;
                      if (window.XMLHttpRequest) {
                          // code for IE7+, Firefox, Chrome, Opera, Safari
                          xmlhttp = new XMLHttpRequest();
                      } else {
                          // code for IE6, IE5
                          xmlhttp = new ActiveXObject('Microsoft.XMLHTTP');
                      }
                      xmlhttp.onreadystatechange = function () {
                          if (this.readyState === 4 && this.status === 200) {
                              document.getElementById("txtHint").innerHTML = xmlhttp.responseText;//c'est synchrone, après cette ligne le nouveau dom est chargé
                              $(document).on('click', '.varsociete', function (event) {
                                  event.preventDefault();
                                  var varsociete = $('#client_soc').val();
                                  $('#get_societe').val(varsociete);
                              });
                          }
                      };
                      xmlhttp.open('GET', 'getuser.php?q=' + str, true);
                      xmlhttp.send();
                  }
              }

              ça devrais marcher.

              • Partager sur Facebook
              • Partager sur Twitter

              Passer une variable dans une modal après un AJAX

              × 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