在一个按钮中提交两个表单

submit two forms in 1 button

本文关键字:两个 表单 提交 一个 按钮      更新时间:2023-09-26

我试图同时提交两个表单我试图将一份表格发送到我的数据库,另一份发送到不同的网站

我的代码是这样的:

function submitform(){
    document.forms["form2"].submit();
    document.forms["form1"].submit();
}

 

<form name="form1" action="1.php" method="post">
    <!-- ... -->
</form>
<form name="form2" action="2.php" method="post" target="foo">
    <!-- ... -->
</form>
<a onclick="submitform();">Go</a>

现在,如果我只提交form2,它会在一个新的选项卡中打开并工作,但当我尝试同时提交它们时,它只提交form1我不知道为什么

如有任何帮助,将不胜感激

感谢

一次只能提交一个表单。

document.forms["form1"].submit();
document.forms["form2"].submit();

第一行是将HTTP请求POST到运行PHP的服务器。响应将覆盖当前页面,可能会使用新的HTML文档。这意味着后续代码是无意义的。即使它开始执行,任何更改都不会持久存在。

为了解决这个问题,可以将两个表单合并为一个表单,或者使用AJAX从服务器"后台"(异步)获取所需信息,并使用JavaScript手动更新页面。

Marc B的评论

一次只能提交一种格式。在提交之前,你必须以某种方式将表格组合成一个表格。

是我的答案。

使用jquery,您可以调用ajax 发布表单

function submit_forms() {
   $.post('1.php', $('#form1').serialize(), function() {
      // do stuff when finish
   });
   $.post('2.php', $('#form2').serialize(), function() {
      // do stuff when finish
   });
}

您需要使用ajax请求提交至少一个表单,并使用一些jasvcript在发送ajax请求时暂停表单的提交。

使用jQuery,您将使用类似以下的东西

<form id="theForm" method="post" action="your/formhandler/on/your/server">
    <fieldset id="myInfo">
          // form fields to post data to you in here
    </fieldset>
    <fieldset id="theirInfo">
          // form fields to post data to the 3rd party in here
    </fieldset>
    <input type="submit" value="submit" />
</form>

将所有内容都包含在一个带有适当提交按钮的表单中更容易访问,但javascript技术(稍作调整)也适用于两个单独的表单和一个<a>标记。

$(function (){ // run this code once teh page has finished loading
    $("#theForm").submit(function() {
         $.ajax({
            type: "post",
            url: "http://their/form/handler",
            data: $("#theirInfo").serialize() // off the top of my head I'm not 100% sure this will work, you may need to do $("#theirInfo").find("input,select,textarea").serialize()
         })
    });
})

服务器上的表单处理程序将收到所有数据,但您可以忽略/丢弃不需要的部分。