【问题标题】:Serialize form to and from JSON从 JSON 序列化表单
【发布时间】:2010-08-25 17:11:51
【问题描述】:

我想将表单序列化为 json,处理 json 对象,然后将其重新序列化以通过 ajax 发送到 php 脚本。

这是我想要做的一个粗略的例子:

s = $('.dia_req_form').serialize();
j = //convert s to json ...HOW??
if(j.name)
{
    alert("you must enter a name");
}
if(selectedID)
{
    j.id = selectedID;
}
s = //serialize j ...HOW??

你可以看到说 HOW?? 的 2 个部分?

【问题讨论】:

  • 为什么不在序列化之前进行检查? :)
  • @Nick 我可以事先验证,但我仍然需要将其他变量添加到列表中。但我总是可以将&foo=bar 附加到序列化字符串中。如果这是最好的方法。

标签: javascript jquery json serialization


【解决方案1】:

您可以像这样使用.serializeArray()$.param()

//validate here
var obj = $('.dia_req_form').serializeArray();
if(selectedID) {
  obj.push({ name: 'id', value: selectedID });
}
var s = $.param(obj); //s can be used for submission

在内部,.serialize() 确实等同于$.param($(this).serializeArray()),所以这一切所做的只是将步骤分开,如果需要添加一个项目。

.serializeArray() 是一个具有 2 个属性(namevalue)的对象数组,我们所做的只是在需要时向数组添加一些对象,然后调用@987654325 @ 使其成为一个字符串。

【讨论】:

    【解决方案2】:

    您可以使用这个库,$.serializeObject 是现有 $.serialize 方法的变体,它不是将表单元素编码为字符串,而是将表单元素转换为可在您的 JavaScript 应用程序中使用的有效 JSON 对象。

    https://github.com/hongymagic/jQuery.serializeObject

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2022-01-12
      • 2015-03-31
      • 1970-01-01
      • 2017-01-11
      • 1970-01-01
      • 2019-04-05
      • 1970-01-01
      相关资源
      最近更新 更多