ajax通过jquery提交多个表单

时间:2010-12-02 22:38:35

标签: jquery ajax forms submit

所以假设我有3个表格

<form name="form1">
<input name="input"></input>
<submit></submit>
</form>

<form name="form2">
<input name="input"></input>
<submit></submit>
</form>

<form name="form3">
<input name="input"></input>
<submit></submit>
</form>

每个表单都有自己的提交按钮

现在假设我有另一种形式

<form id="submitAll">
<submit value="submit all"></submit>
</form>

其唯一的功能是同时提交所有其他3个表格....现在这里是约束:

  1. 提交submitAll时,必须使用Ajax并将所有其他3个表单中的输入数据转发到processor.php,最好是通过POST
  2. processor.php需要能够区分哪些输入到哪种形式......然后分别处理每个表单的输入
  3. 我的问题是......什么是使processor.php能够区分哪些输入属于哪种形式的最佳方式.....

    我以前的尝试是使用jquery的序列化来序列化所有3个表单的输入,但是然后它会将所有输入合并为一个字符串并注意由于表单中的输入具有相同的名称,字符串就像“ input = blah&amp; input = blah&amp; input = blah“我无法区分哪个输入到哪种形式......

    最好让表单中的输入具有相同的名称,以便processor.php可以顺利执行

    是否可以将POST字符串作为数组或json或任何其他格式传递,以便processor.php可以区分哪个输入转到哪种形式而不使输入名称不同?记住它需要通过Ajax

    这样做

    提前致谢!!!

3 个答案:

答案 0 :(得分:2)

为什么不使用像

这样的命名约定
  • 名= “Form1中[输入]”
  • 名= “窗体2 [输入]”
  • 名= “Form3 [输入]”

然后定期执行序列化和$ .post,这将有助于您在处理器循环中保持相同的命名约定

修改

<?php 
foreach($_POST as $form) {
     // $form = array('input' => 'i am here')
     processForm($form); // names are still the same for all forms
}
?>

答案 1 :(得分:1)

你不想使用数组吗?输入将按照序列化的顺序进行。

<input name="input[]" />

答案 2 :(得分:0)

<form name="form1" class="postable"></form>
<form name="form2" class="postable"></form>
<form name="form3" class="postable"></form>

的javascript:

$(document.ready(function(){
    $("a.submitforms").click(function(){
       $('form.postable').each(function(){
           Form = $(this);
           payload = $(Form).serialize();

          //Send payload via Ajax.
       });
    });
}));

这只是一种替代方法,但我同意Ish Kumar的方法!