2012-02-22 143 views
1

我试图在同一时间 IM提交2种形式试图发送1种形式到我的DB和其他不同的网站提交两种形式

我的代码是这样的:

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

任何帮助,将不胜感激

谢谢

+0

你为什么要提交2种形式?只需提交1并在1个过程中完成这项工作。 – Grigor 2012-02-22 21:18:32

+6

您一次只能提交一种格式。您必须在提交之前以某种方式将表单合并为一个表单。 – 2012-02-22 21:19:15

+3

要提交2个表单,需要使用AJAX调用。 – jcubic 2012-02-22 21:20:02

回答

1

Marc B的评论

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

是我的答案。

1

只有一种形式可以一次提交。

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

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

要解决这个问题,这两种形式组合成一个,或使用AJAX使用JavaScript手动让你从服务器(异步)“幕后”所需要的信息和更新页面。

0

使用jQuery你可以调用与阿贾克斯发表您的形式

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

您将需要使用一个Ajax请求提交的形成至少一个有些jasvcript当您发送AJAX暂停表单的提交reques。

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

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