Jquery 序列化和提交两个或多个表单时删除重复的表单输入

Jquery 序列化和提交两个或多个表单时删除重复的表单输入,jquery,ajax,forms,Jquery,Ajax,Forms,我有两个表单,它们包含相同名称的输入的公共操作。首先,我的要求是提交个人表格,我可以很容易地做到。然后我需要通过序列化并通过ajax发送两个表单,一次提交两个表单。这里的问题是,由于两个表单都包含名称相同的输入,所以post中会出现重复的值。我怎样才能预防它 例: $(文档).ready(函数(){ $(“#btn”)。在(“单击”,函数(){ var dataString=$('#form1,#form2')。序列化(); $.ajax({ url:“someOther.jsp”, 数据类型

我有两个表单,它们包含相同名称的输入的公共操作。首先,我的要求是提交个人表格,我可以很容易地做到。然后我需要通过序列化并通过ajax发送两个表单,一次提交两个表单。这里的问题是,由于两个表单都包含名称相同的输入,所以post中会出现重复的值。我怎样才能预防它

例:

$(文档).ready(函数(){
$(“#btn”)。在(“单击”,函数(){
var dataString=$('#form1,#form2')。序列化();
$.ajax({
url:“someOther.jsp”,
数据类型:“json”,
数据:dataString,
成功:功能(数据){
控制台日志(数据);
},
错误:函数(数据){
控制台日志(数据);
}
});
});
});


提交
最简单的解决方案是生成这些数组,而不是单个值,如下所示:

<form action="some.jsp" method="post" id="form1">
<input type="hidden" id="hField1" name="hField1[]" value="value1">
<input type="hidden" id="hField2" name="hField2[]" value="value2">
<input type="text" id="field11" name="field11[]">
<input type="text" id="field21" name="field21[]">
<input type="submit" value="Save">
</form>

<form action="some.jsp" method="post" id="form2">
<input type="hidden" id="hField1" name="hField1[]" value="value1">
<input type="hidden" id="hField2" name="hField2[]" value="value2">
<input type="text" id="field12" name="field12[]">
<input type="text" id="field22" name="field22[]">
<input type="submit" value="Save">
</form>

您可以在两个不同的变量中发送两个表单数据

    $(document).ready(function(){
      $("#btn").on("click",function(){
      var form1=$('#form1').serialize();
      var form2=$('#form2').serialize();
       $.ajax({
        url: "someOther.jsp",
        dataType: 'json',
        data: {form1:form1,form2:form2},
        success: function (data) {
            console.log(data);
        },
        error: function (data) {
            console.log(data);
        }
  });
 });
});
另一方面,两种表单数据的获取方式不同。

$(文档).ready(函数(){
$(“#btn”)。在(“单击”,函数(){
$(“.ignore”).remove();
var dataString=$('#form1,#form2')。序列化();
$.ajax({
类型:“POST”,
url:“someOther.jsp”,
数据类型:“json”,
数据:dataString,
成功:功能(数据){
控制台日志(数据);
},
错误:函数(数据){
控制台日志(数据);
}
});
});
});


提交
它们是否必须命名相同?简单解决方案-更改第二种形式的名称。其次,您可以在服务器端使用某种类型的计数器来检测第二个表单,但您需要显示服务器端来帮助检测。隐藏字段是进入服务器端查询的唯一字段。因此,它们必须具有相同的名称。重复ID无效。我只是前端,但从我所看到的情况来看,如果您的服务器需要无效的HTML,那么您应该重新评估它的功能。@zer00ne我同意重复ID无效,但对于名称,没有此类条件,而且我的要求中没有使用ID。请告诉我是否有比使用数组名更简单的方法。@AdityaRao我完全同意重复名称,它是有效的和正统的。但是您有重复的
#hField1
#hField2
。目前,浏览器只能看到前两组,如果您试图通过#id查找它们,则第二组将被忽略。我想我的习惯是(据我所知)做正确的事情,以防将来它不会在@ss中咬到我。