带有 ajax 的函数 serialize() 不返回任何内容

时间:2021-02-02 15:09:24

标签: javascript php html ajax

我有一个包含多个选择的表单,由于 javascript,它可以根据用户的需求添加。我无法使用序列化功能检索表单元素... 我尝试使用 getElementByTagName,但我只能选择一个带有 document.getElementsByTagName ('select') [0] .value 的项目,因此如果有人对此有任何想法。

这是我的 html/PHP :

         <form id="dropdown_scene">
           <div class="form-group">
             <label for="select_quand">Quand l'appareil</label>
             <select class="form-control" id="select_quand">
               <?php
 
               $stmt = $pdo->prepare('SELECT * FROM main.appareil');
               $stmt->execute();
               // On affiche chaque entrée une à une
               while ($donnees = $stmt->fetch()) {
                 //TODO : selectionner seulement les boutons grace au label et par instance  ?>
 
                 <option>Le <?php echo $donnees['label']; ?> <?php echo $donnees['node_name']; ?> <?php
                   if ($donnees['instance'] === '1' and $donnees['label'] === 'Switch') {
                     echo 'Switch 1 et 2';
                   } elseif ($donnees['instance'] === '2' and $donnees['label'] === 'Switch') {
                     echo 'Switch 1';
                   } elseif ($donnees['instance'] === '3' and $donnees['label'] === 'Switch') {
                     echo 'Switch 2';
                   }
                   ?></option>
 
                 <?php
               }
 
               $stmt->closeCursor(); // Termine le traitement de la requête
 
               ?>
             </select>
           </div>
           <div class="form-group">
             <label for="select_base">est actionné faire</label>
             <select class="form-control" id="select_base">
               <?php
 
               $stmt = $pdo->prepare('SELECT * FROM main.command');
               $stmt->execute();
               // On affiche chaque entrée une à une
               while ($donnees = $stmt->fetch()) {
                 //TODO : selectionner seulement les boutons grace au label et par instance  ?>
 
                 <option><?php echo $donnees['appareil']; ?><?php echo $donnees['bouton']; ?></option>
 
                 <?php
               }
 
               $stmt->closeCursor(); // Termine le traitement de la requête
 
               ?>
             </select>
             <div class="form-group" id="Cible">
 
               <!-- Cible pour l'ajout de champ -->
 
             </div>
           </div>
 
 
           <a href="#" class="btn btn-success" onclick="fAddText()"><i class="fas fa-plus nav-icon"></i></a>
           <a href="#" class="btn btn-danger" id="sup" onclick="fSuppText()"><i class="fas fa-minus nav-icon"></i></a>
           <div class="form-group">
             <button href="#" onclick="submit_form()" style="position: relative; float: right;"
                     class="btn btn-success"><i class="fas fa-save nav-icon"></i> Sauvgarder Scene
             </button>
           </div>
         </form>
         

这是我的 AJAX :

<script type="text/javascript">
 
  function submit_form() {
    var form_url = "../dist/php/add_scene.php"; //récupérer l'URL du formulaire
    var form_method = "POST"; //récupérer la méthode GET/POST du formulaire
    var form_data = $('#dropdown_scene').serialize();
    $.ajax({
      url: form_url,
      type: form_method,
      data: form_data,
      success: function (data) {
          const Toast = Swal.mixin({
            toast: true,
            position: 'top-end',
            showConfirmButton: false,
            timer: 8000
          });
          Toast.fire({
            icon: 'success',
            title: 'La scene a etais enregistré avec succes ! '+ form_data +''
          });
      },
      error: function () {
        alert('Une erreur c\'est produite');
      },
    });
  }
 
</script>

谢谢

1 个答案:

答案 0 :(得分:0)

您的选择都没有名称,因此它们不会被序列化。这是 HTML 表单如何工作的基本规则,您需要确保熟悉它。 name 属性控制参数在发送到服务器时的名称。

例如你需要有类似的东西

<select name="quand" class="form-control" id="select_quand">

并且在您要提交的每个表单元素上都有相似之处。