用Javascript中的一个按钮提交2个表单不起作用

用Javascript中的一个按钮提交2个表单不起作用,javascript,php,jquery,html,Javascript,Php,Jquery,Html,我想用一个按钮从同一页面提交两个表单,所以我尝试使用本文中描述的Javascript技术 这是我的密码: send.php: <form action="receive.php" method="post" id="form1"> <input type="text" value="2nd Form" name="q1" /> </form> <form action="receive.php" method="post" id="form2"&

我想用一个按钮从同一页面提交两个表单,所以我尝试使用本文中描述的Javascript技术

这是我的密码:

send.php:

<form action="receive.php" method="post" id="form1">
    <input type="text" value="2nd Form" name="q1" />
</form>
<form action="receive.php" method="post" id="form2">
    <input type="text" value="3rd Form" name="q2" />
</form>


<input type="button" value="Click Me!" onclick="submitForms()" />

<script>

submitForms = function(){
    document.getElementById("form1").submit();
    document.getElementById("form2").submit();
}

</script>
echo $_POST['q1'];

echo $_POST['q2'];
但是当它重定向到receive.php时,只显示
$\u POST['q2']
的值,而不是第一次输入的值


我不明白为什么会这样。谢谢。

不需要两张表格。将“name=“q2”移动到第一个表单。
此外,您正在尝试调用相同形式的操作。这是不值得赞赏的。

不幸的是,我无法设置一个示例,因为它相当长。但这就是发生在我身上的事情。 在代码中移动两个提交请求,一个接一个地提交到同一个PHP文件,但使用两种不同的形式。 假设这是您的PHP代码:

echo $_POST['q1'];
echo $_POST['q2'];
当您实际发出第一个请求时,会打印q1。但在您发送第二次提交后,它会“覆盖”第一步,您只会看到第二次提交的输出。 您可以通过两种方式进行验证:

1) 颠倒提交顺序:

submitForms = function(){
    document.getElementById("form2").submit();
    document.getElementById("form1").submit();
}
您应该只看到打印的q1

2) 尝试向第二个请求添加超时,您将看到以下两个回音:

submitForms = function(){
        document.getElementById("form1").submit();
        setTimeout(function() { 
        document.getElementById("form2").submit(); }, 10000);
    }
因此,10秒后,您也应该看到第二个输出

所以实际上你的请求确实发生了。如果您将值记录到一个文件而不是echo,您应该可以看到这两个请求都与代码一起发生

虽然这应该是我的理由,但我强烈建议你改变你的逻辑。显然不需要总是启动两个提交请求到同一个PHP文件。
将两个表单分组,只发送一个请求,可能会添加一个
input hidden
字段,以检测哪些字段已发送或您处于何种情况

使用答案,这是在你在文章中提到ie你可以使用这个答案,因为第一个值由第二个php调用重置OK谢谢,但显然一个必须激活弹出窗口,使其工作,我不希望这是因为它为我的网站谢谢你的解释,但实际上我可以“t将这两个表单分组,因为它们在我的页面中用mutliples div分隔。您是否尝试按照我上面的建议进行操作?你真的应该两次提交,问题是echo,它只显示最后一次打印。如果您尝试将请求记录到一个文件中,然后打开该文件,您应该会看到这两个文件