循环生成的多个表单一键提交
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【讨论】:
以上是关于循环生成的多个表单一键提交的主要内容,如果未能解决你的问题,请参考以下文章