使用javascript提交两个表单,但失败


Submitting two form using javascript but failed

我一直在尝试使用javascript提交两个表单,失败了。我已经搜索了stackoverflow,但没有一个javascript工作…

也试过了

用一个按钮提交两个表单这是我的代码…我的整个页面很长,所以我只是粘贴了两个表单代码在这里…每个字段的form1 (regForm)是必需的。和form2 (frmAdd)包含一个while循环……我想这两种形式都不一样。所以任何解决方案与javascript或任何替代这些形式…
  <script>
  submitForms = function(){
    document.forms["regForm"].submit();
    document.forms["frmAdd"].submit();
}
  </script>
      <form action="userdata.php" method="post" name="regForm" id="regForm" >
      <h2><em>Personal Details : </em></h2></br>
        <table width="80%" border="0" cellpadding="3" cellspacing="3" class="forms">
            <tr>
                <td width="22%">NAME<span class="required"><font color="#CC0000">*</font></span></td> 
                <td width="78%"> 
              <input name="full_name" type="text" id="full_name" size="40" value="<? echo $row_settings['full_name']; ?>" class="required"></td>
            </tr>
          <tr> 
               <td>FATHER'S NAME<span class="required"><font color="#CC0000">*</font></span></td> 
               <td> 
              <input name="f_name" type="text" id="f_name" size="40" value="<? echo $row_settings['f_name']; ?>" class="required"></td>
          </tr>
          <tr>
                <td>MOTHER'S NAME<span class="required"><font color="#CC0000">*</font></span></td> 
                <td> 
              <input name="m_name" type="text" id="m_name" size="40" value="<? echo $row_settings['m_name']; ?>" class="required"></td>
            </tr>
          <tr> 
               <td>NATIONALITY<span class="required"><font color="#CC0000">*</font></span></td> 
               <td> 
              <input name="nationality" type="text" id="nationality" size="40" value="<? echo $row_settings['nationality']; ?>" class="required"></td>
          </tr>
          <tr>
                <td>RELIGION<span class="required"><font color="#CC0000">*</font></span></td> 
                <td> 
              <input name="religion" type="text" id="religion" size="40" value="<? echo $row_settings['religion']; ?>" class="required"></td>
          </tr>
        </table></br>
        <p align="center">
            <!-- previous button   <input name="doSave" type="submit" id="doSave" value="Submit">  -->
        </p>
    </form> 
        <form action="userdata.php" name="frmAdd" method="post">
<table width="80%" border="0" cellpadding="3" cellspacing="3" class="forms">
  <tr>
    <td width="5"> <div align="center">NO</div></td>
    <td width="91"> <div align="center">Employer's NAME</div></td>
    <td width="160"> <div align="center">COUNTRY</div></td>
    <td width="198"> <div align="center">POSITION</div></td>
    <td width="70"> <div align="center">FROM</div></td>
    <td width="70"> <div align="center">TO</div></td>
    <td width="70"> <div align="center">SALARY</div></td>
    <td width="70"> <div align="center">REASONS FOR LEAVING</div></td>
  </tr>
  <?php for($i=1;$i<=4;$i++) { ?>
  <tr>
    <th width="5"> <div align="center"><? echo $i . "."; ?></div></th>
    <td><input type="text" name="emp_name<?=$i;?>" size="25"></td>
    <td><input type="text" name="emp_country<?=$i;?>" size="10"></td>
    <td><input type="text" name="emp_pos<?=$i;?>" size="10"></td>
    <td><input type="text" name="emp_frm<?=$i;?>" size="5"></td>
    <td><input type="text" name="emp_to<?=$i;?>" size="5"></td>
    <td><input type="text" name="emp_sal<?=$i;?>" size="5"></td>
    <td><input type="text" name="emp_lev<?=$i;?>" size="25"></td>
  </tr>
  <?php } ?>
  </table>
  </br>
    <!-- previous button <input type="submit" name="doHis" value="Save"> -->
  <input type="hidden" name="hdlfrm" value="<?=$i;?>">
  <input type="button" value="Click Me!" onclick="submitForms()" />

你不能在一个页面上提交两个不同的表单。你有一个竞争条件。

如果您想一次提交两个表单,要么将它们合并并在服务器上处理,要么使用Ajax提交它们。

我认为最简单的方法是安装jQuery并使用find方法然后使用serialize整个事情并使用jQuery post, getajax方法发送它

缺少"标签",代码在某些地方不正确
如果你把代码缩短到相关部分,然后发布,那就容易多了。
所以我必须为你这么做。

应该测试以下代码。只要这不起作用,就不需要更多的"表单输入"来写入。

test.php

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
    <script type="text/javascript"> 
    submitForms = function(){
    document.forms["regForm"].submit();
    window.setTimeout(submitB,1000)
    } 
    function submitB() {
    document.forms["frmAdd"].submit();
    }
    </script>
    <title>Emergency Table - Update</title>
</head>
<body>
 <form action="writea.php" method="post" name="regForm" id="regForm" >
    <h2><em>Personal Details : </em></h2></br>
    <table width="80%" border="0" cellpadding="3" cellspacing="3" class="forms">
        <tr>
            <td width="22%">NAME<span class="required"><font color="#CC0000">*</font></span></td> 
            <td width="78%"> 
             <input name="full_name" type="text" id="full_name" size="40" value="Romeo Delta" class="required"></td>
        </tr>
    </table></br>
 </form> 
 <form action="writeb.php" name="frmAdd" method="post">
  <table width="80%" border="0" cellpadding="3" cellspacing="3" class="forms">
  <tr>
    <td width="5"> <div align="center">TEST</div></td>
  </tr>
  </table>
  </br>
  <input type="hidden" name="hdlfrm" value="1000">
  <input type="button" value="Click Me!" onclick="submitForms()" />
 </form>
</body>
</html>

writea.php

<?php
  if (isset($_POST['full_name'])) { $hdl = $_POST['full_name']; } else { $hdl = "Err."; }
  $fp = fopen('dataa.txt', 'a+');
  fwrite($fp, "Hello from write A : ".$hdl."'r'n");
  fclose($fp);
?>

writeb.php

<?php
  if (isset($_POST['hdlfrm'])) { $hdl = $_POST['hdlfrm']; } else { $hdl = "Err."; }
  $fp = fopen('datab.txt', 'a+');
  fwrite($fp, "Hello from write B : ".$hdl."'r'n");
  fclose($fp);
?>

提交后的data .txt和database .txt的内容应为。

dataa.txt
Hello from write A : Romeo Delta
datab.txt
Hello from write B : 1000

如果你在你的页面中做普通表单发布,第一个提交动作将完成并重定向到该页面,第二个表单发布将不会完成我的解决方案是更好地使用ajax post方法并提交这两个表单希望这有帮助。

找到解决方案…使用这个jquery和jquery表单js .

<script type="text/javascript" src="js/jquery.js"></script>
<script type="text/javascript" src="js/jquery.form.js"></script>
<script>
$(document).ready(function() { 
        $('#form1').ajaxForm(function() { 
        });
        $('#form2').ajaxForm(function() { 
                alert("Your Submitted Information has been Saved !");
                window.location = "userdata.php";    
                return true;
        });
        $("#submitEverything").click(function(){
        mySubmitFunction();
        return false;
});
}); 
function mySubmitFunction() {
        $("#form2").submit();
        $("#form1").submit();
}
</script>

userdata.php是粘贴此代码的页面
并且必须在表单中使用两种不同的操作(如form1 action="page1"和form2 action="page2")