在1个按钮中提交两个表格

时间:2012-02-22 21:16:38

标签: javascript forms submit

我试图同时提交2张表格 我试图将1个表单发送到我的数据库,另一个表单发送到另一个站点

我的代码就像:

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 我不知道为什么

任何帮助将不胜感激

谢谢

4 个答案:

答案 0 :(得分:1)

一次只能提交一份表格。

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

第一行是向运行PHP的服务器发送HTTP请求。响应将覆盖当前页面,可能是新的HTML文档。这意味着后续代码没有实际意义。即使它开始执行,任何更改都不会持续。

要解决此问题,请将两个表单合并为一个,或使用AJAX从服务器“幕后”(异步)获取所需信息,并使用JavaScript手动更新页面。

答案 1 :(得分:1)

Marc B的评论

  

您一次只能提交一种格式。在提交之前,您必须以某种方式将表单合并为一个表单。

是我的答案。

答案 2 :(得分:0)

使用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
   });
}

答案 3 :(得分:0)

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

使用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>

使用正确的提交按钮可以更好地获取所有内容,但是eth javascript技术(略微调整)woudl也可以使用2个单独的表单和<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()
         })
    });
})

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