Javascript通过单击一个按钮逐个提交所有表单
我正试图提交多个表格,分别与一个按钮点击一个。我使用SQL变量Javascript通过单击一个按钮逐个提交所有表单,javascript,php,Javascript,Php,我正试图提交多个表格,分别与一个按钮点击一个。我使用SQL变量$name和id=“form”填充输入表单,具体取决于创建id form1、form2等的结果。然后,我需要单击一下发送所有这些表单。但是彼此独立,所以首先是id为form1的表单,而不是form2等 这个问题。我现在的方式只是提交其中一个表单,即生成的最后一个表单。我做错了什么?控制台没有给出任何错误,所有表格都使用正确的ID生成(表格1、表格2、表格3等) PS:我不能用AJAXXMLRequest来解决这个问题 $type =
$name
和id=“form”
填充输入表单,具体取决于创建id form1、form2等的结果。然后,我需要单击一下发送所有这些表单。但是彼此独立,所以首先是id为form1的表单,而不是form2等
这个问题。我现在的方式只是提交其中一个表单,即生成的最后一个表单。我做错了什么?控制台没有给出任何错误,所有表格都使用正确的ID生成(表格1、表格2、表格3等)
PS:我不能用AJAXXMLRequest来解决这个问题
$type = "test"
$i=0;
$stmt = $mysqli->prepare("SELECT name FROM account WHERE purpose = ? ");
$stmt->bind_param('s',$type);
$stmt->execute();
$result = $stmt->get_result(); //only works when nd_mysli is set on the server!
while ($rowid = $result->fetch_assoc())
{
$name = $rowid['name'];
$i++
?> <form method="post" id="form<?= $i ?>" target="_external" action="https://www.externalwebsite.com/index/post.php">
<input type="hidden" value="<?= $name ?>" name="sendname" >
</form>
<?PHP } ?>
<button id="submit">Submit</button>
<script>
document.getElementById( 'submit' ).addEventListener( 'click', function () {
// check for and report errors here
for( var index = 0; index < document.forms.length; index++ ) {
document.forms[index].submit();
};
} );
</script>
$type=“测试”
$i=0;
$stmt=$mysqli->prepare(“从帐户中选择名称,其中目的=?”;
$stmt->bind_参数('s',$type);
$stmt->execute();
$result=$stmt->get_result()//只有在服务器上设置了nd_mysli时才有效!
而($rowid=$result->fetch_assoc())
{
$name=$rowid['name'];
$i++
?>您的问题?提交表单(不使用AJAX/fetch)就像单击超链接。它卸载当前页面并移动到新页面。因此,未提交的表单将消失
您可以通过创建超链接来实现这一点,该超链接包含您希望发送到服务器的字段(编码为url参数)以及锚定标记中的target=“blank”
。当然,这些将显示为服务器上的GET操作
但是你最好的办法是找出解决这个问题的另一种方法。如果你不/不能使用AJAX…
您可以在iframe中加载所有表单。当每个表单提交时,iframe可能会重新加载或执行formAction要求的任何操作,但您的用户主窗口将保持原样
否则,浏览器将按照表单操作
刷新/浏览页面。如果您确实能够使用AJAX,一个基本示例是:
var i = 0;
$('form').each(function() {
var url = $(this).attr('action');
$.ajax({
url: url,
method: 'POST',
data: $(this).serialize(),
beforeSend: function () {
i++;
console.log('Submitting form #' + i);
},
success: function(response) {
console.log('Done', response);
$(this).trigger('reset'); // clear all fields in this form
}
});
});
为什么不使用一个包含多个元素的表单呢?您可以在名称name=“sendname[]上使用数组表示法
然后对其进行迭代,或者将$id
放在其中。如果需要单独提交非Xmlrequest,那么远程站点的不灵活性会让您束手无策。我想您需要强制用户通过渐进式单张表单。也许可以通过会话保留他们的进度?如果我理解正确的话。我使用javascript单独提交表单是不可能的?如果你读到这样一个问题:“PS:我不能使用ajax Xmlrequest解决这个问题。”如果你读到答案:“如果你真的能够使用ajax”,你能想出一个逻辑上的原因吗?如果他非常非正统的尝试是这样的话,ajax是不可能的?提醒我:“我不耐乳糖”-“如果你想试试酸奶,我知道一家很棒的商店!";):b比推荐iframes更好…如果解决方案是:使用iframes,那么可能是XY问题。我想我同意@O.Jones——完全找到另一种方法。还有什么其他方法可能?表单和提交按钮也可以一起显示。我有10个。当我逐个单击它们时,没有问题。不是吗e是否有一个重新创建单击或表单提交的解决方案?