48

您可以将多个表单序列化为一个表单,以便只发出一个帖子或 ajax 请求吗?我已经四处搜索,这一切都是为了通过 post/ajax 单独提交每个表单。

4

4 回答 4

138

如果您$('form').serialize()在具有多个表单的页面上运行,它将正确地将所有表单序列化为一个字符串。

要仅包括某些形式,请使用$('#form1, #form2').serialize()

于 2012-02-14T16:55:19.703 回答
32

当您使用 jQueryserialize()函数时,它只是将您的表单转换为 format 格式的字符串a=1&b=2&c=3。因此,您当然可以将此函数应用于两种形式并将结果连接&起来,并在它们之间使用 a,然后在您的 ajax 调用中使用结果。您需要进行一些检查以确保在进行连接时两个字符串都不为空。

于 2012-02-14T16:49:17.653 回答
23

我喜欢上面Jleagle的答案。

如果您对表格更具体,请使用

$('#detailsform,#levelForm').serialize();

上面的行将返回一个字符串值。像customId=08071992&cort=01&empId=7777

您可以通过将属性添加disabled="disabled"到输入字段来避免不需要的字段,或者换句话说,“禁用”字段不会被序列化。

于 2012-05-19T21:06:25.437 回答
0

对我来说,解决方案是:

$('#firstForm').append($('#secondForm').children());
$('#firstForm').submit();

在我的情况下的结果 - 在一个查询字符串中包含两种形式的单个 GET 查询。

于 2021-05-01T20:09:20.477 回答