你能把多个表单序列化成一个表单,这样就只需要一个post或 AJAX 请求了吗?我到处找了找,都是通过post/ajax提交每个表单的。
xu3bshqb1#
如果你在一个有多个表单的页面上运行$('form').serialize(),它会正确地将所有表单序列化为一个字符串。若要仅包括某些表单,请使用$('#form1, #form2').serialize()
$('form').serialize()
$('#form1, #form2').serialize()
nhaq1z212#
当使用jQuery serialize()函数时,它只是将表单转换为a=1&b=2&c=3的字符串。因此,您当然可以将此函数应用于两个表单并将结果连接起来,在它们之间使用&,并 AJAX 调用中使用结果。您需要进行一些检查,以确保在进行连接时字符串都不是空的。
serialize()
a=1&b=2&c=3
&
disho6za3#
我喜欢上面Jleagle的答案。如果您对表单有更详细的了解,请使用
$('#detailsform,#levelForm').serialize();
上面一行将返回一个字符串值,如customId=08071992&cort=01&empId=7777
customId=08071992&cort=01&empId=7777
您可以通过在输入字段中添加属性disabled="disabled"来避免不需要的字段,或者换句话说,“禁用”字段不会被序列化。
disabled="disabled"
dfty9e194#
对我来说,解决方案是:
$('#firstForm').append($('#secondForm').children()); $('#firstForm').submit();
在我的例子中,结果是一个GET查询,两种形式都在一个查询字符串中。
2ekbmq325#
function mergeAndSerialize(f1, f2) { let d1 = $(f1).serializeArray(), d2 = $(f2).serializeArray(); d2.forEach(f => !d1.some(o => o.name === f.name) && d1.push(f)); return $.param(d1); }
5条答案
按热度按时间xu3bshqb1#
如果你在一个有多个表单的页面上运行
$('form').serialize()
,它会正确地将所有表单序列化为一个字符串。若要仅包括某些表单,请使用
$('#form1, #form2').serialize()
nhaq1z212#
当使用jQuery
serialize()
函数时,它只是将表单转换为a=1&b=2&c=3
的字符串。因此,您当然可以将此函数应用于两个表单并将结果连接起来,在它们之间使用&
,并 AJAX 调用中使用结果。您需要进行一些检查,以确保在进行连接时字符串都不是空的。disho6za3#
我喜欢上面Jleagle的答案。
如果您对表单有更详细的了解,请使用
上面一行将返回一个字符串值,如
customId=08071992&cort=01&empId=7777
您可以通过在输入字段中添加属性
disabled="disabled"
来避免不需要的字段,或者换句话说,“禁用”字段不会被序列化。dfty9e194#
对我来说,解决方案是:
在我的例子中,结果是一个GET查询,两种形式都在一个查询字符串中。
2ekbmq325#