【问题标题】:Serialize multiple forms together?一起序列化多个表单?
【发布时间】:2012-03-06 01:08:00
【问题描述】:

您能否将多个表单序列化为一个表单,以便只发出一个 post 或 ajax 请求?我搜索了一下,都是为了通过 post/ajax 分别提交每个表单。

【问题讨论】:

标签: jquery serialization jsonobject


【解决方案1】:

对我来说,解决方案是:

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

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

【讨论】:

    【解决方案2】:

    我喜欢上面Jleagle 的回答。

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

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

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

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

    【讨论】:

    • 感谢您指出input[disabled] 不包含在$().serialize() 中。
    【解决方案3】:

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

    要仅包含某些表格,请使用$('#form1, #form2').serialize()

    【讨论】:

    • @472084 我尝试了$('#form1, #form2').serialize() 的方法,但没有成功,只有最后一个表单会被发布。我有 1big 表格,我必须分解为 2,其中第二个仅在第一个验证后出现(这就是我必须将其分解为 2 的原因)。所以第一次提交不会提交数据,而只是验证,而最后一次会序列化两个表单并提交所有数据。我最终不得不分别序列化这两种形式并用& 连接它们以使其工作。您知道的任何文档都可以让我直接了解为什么会失败?我会继续谷歌搜索
    【解决方案4】:

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

    【讨论】:

      猜你喜欢
      • 2015-06-15
      • 1970-01-01
      • 2013-03-21
      • 1970-01-01
      • 2016-01-26
      • 2015-04-17
      • 2017-02-12
      • 1970-01-01
      • 2013-08-17
      相关资源
      最近更新 更多