循环生成的多个表单一键提交

Posted

技术标签:

【中文标题】循环生成的多个表单一键提交【英文标题】:Submit with one button multiple forms generated by loop 【发布时间】:2019-07-25 12:28:31 【问题描述】:

对不起意大利面条代码:(我不知道为什么它不起作用。按钮只提交最后一个表单,但我想提交每个生成的表单。我该怎么办?我尝试了 AJAX,但它给出了相同的结果. 我想递归添加选择,但我认为这是最难的方法,还有另一种解决方案。

 <table id="datatable" class="table table-striped table-bordered">
   <thead>
    <tr>
     <th>Product Name</th>
     <th>Product Weight</th>
     <th>Product Image</th>
     <th>Status</th>
     <th>Choose suplier</th>
     <th>Delete</th>
    </tr>
   </thead>
   <tbody>
   <?php        
   foreach ($result as $k=>$v)
   
      $oid[] = $v['op_id'];
      $pui[] = $v['pui'];
      ?>
      <tr>
       <td><?php echo substr($v['name'], 0,10); ?></td>
       <td><?php echo substr($v['gram'], 0,10); ?></td>
       <td><img style="width: 50%" src="<?php echo $site_url.'images/'.$v['image']; ?>" ></td>
       <td><?php echo substr($v['opia'], 0,10); ?></td>
       <td>
          <form method="POST" enctype="multipart/form-data" id="demo-form2" data-parsley-validate oidd="<?php echo $v['pui']; ?>" class="form-horizontal form-label-left sels<?php echo $v['op_id'];?>">
           <div class="form-group">
             <label class="">
             </label>
           <div class="" style="width: 100%">
           <?php
            $sups = $db->prepare('SELECT * FROM product p, suplier s, prod_suplier ps WHERE p.u_id=ps.p_id AND ps.suplier_id=s.id AND p.u_id=:u_id GROUP BY s.id');
            $sups->execute(array('u_id'=>$v['pui']));
            $count_sups = $sups->rowCount();
            if ($count_sups==1) 
              $get_sups = $sups->fetch(PDO::FETCH_ASSOC);
              echo $get_sups['full_name'];
             else 
            ?>
              <select style="" name="supliers" id="">
               <?php
                while ($get_sup=$sups->fetch(PDO::FETCH_ASSOC)) 
                ?>
                 <option value="<?php echo $v['sfn']; ?>"><?php echo $get_sup['full_name']; ?></option>
          <?php ?>
              </select>
      <?php  ?>
           </div>
         </div>
       </form>
      </td>
      <td>
       <form style=" float: right;" method="POST" action="<?php echo $site_url.$state.'delete/' ?>">
       <input type="hidden" name="delid" value="<?php echo $v['oid'] ?>">
       <button type="button" onclick="dsomo(this);" name="dbtn" style="color: red; background-color: rgba(0,0,0,0); border:none;" href="">
       <i class="fa fa-trash fa-2x" ></i>
       </button>
       </form>
      </td>
     </tr>
<?php ?>
    </tbody>
   </table>
  </div>
 </div>
</div>
<button type="submit" id="acception" name="submit">submit</button>
<script async>
$('#acception').on('click', function () 
<?php
for ($i=0;$i<count($oid);$i++) 
?>
  $("tr>td>.sels<?php echo $oid[$i];?>").submit();
<?php  ?>
)
</script>

【问题讨论】:

提交会触发页面重新加载 - 因此其他表单不会提交。您可以通过不重新加载页面并通过 ajax 将表单信息发送到您的后端来捕捉到这一点。 @paskl 我试过ajax请求,结果一样 ajax 出了什么问题? @paskl 它给出了最后一个形式作为结果 你有没有尝试给表单一个类?这是一个很好的例子:***.com/questions/40873893/… 【参考方案1】:

感谢 MojoAllmighty,我找到了解决方案。如以下链接所述,如果我想通过一个按钮提交多个表单,我必须为表单分配相同的类并使用 ajax 进行异步提交表单。所以也许它可以被标记为下面链接的副本。

Jquery - Submit all forms by one button

【讨论】:

以上是关于循环生成的多个表单一键提交的主要内容,如果未能解决你的问题,请参考以下文章

在 Wordpress 表单管理器中一键提交多个表单

javascript 一键提交多个表单

循环提交表单

django - 在一个帖子请求中提交多个表单(与一键不同,因为我需要一起处理这两个表单的数据!)

HTML 表单中的多个提交按钮

js判断循环多个表单问题