jQuery序列化和反序列化

时间:2010-06-23 09:05:30

标签: jquery

我想用jQuery序列化和取消序列化表单。

如何以序列化方式获取所有元素的所有属性?

5 个答案:

答案 0 :(得分:15)

.serialize()会将具有名称属性的输入控件映射到标准查询字符串中:

foo=bar&bar=foo&and=soon

几乎每种“后端”编程语言都可以轻松访问这种字符串。

如果您需要序列化对象信息,请使用JSON

var obj = {
    foo:  'bar',
    more: 'etc
};

使用window.JSON.stringify(obj);对此进行序列化。要反序列化这样的JSON字符串,请使用window.JSON.parse(str);,它返回一个javascript对象。

许多语言都支持这一原则。

答案 1 :(得分:3)

2020 解决方案

serialize()

为此目的而包含在 jQuery 本身中https://api.jquery.com/serialize/

$('#someKind .ofASelectorForYour form').serialize();(返回序列化字符串)

unserialize()

不包含在 jQuery 中,但是,文档说

<块引用>

.serialize() 方法以标准 URL 编码表示法创建文本字符串。

...因此,在 2020 年,我们可以利用 URLSearchParams 接口:
https://developer.mozilla.org/en-US/docs/Web/API/URLSearchParams
https://url.spec.whatwg.org/#interface-urlsearchparams

function unserialize(serializedData) {
    var urlParams = new URLSearchParams(serializedData); // get interface / iterator
    unserializedData = {}; // prepare result object
    for ([key, value] of urlParams) { // get pair > extract it to key/value
        unserializedData[key] = value;
    }

    return unserializedData;
}

(返回未序列化的键 => 值对的对象)
一次性使用提取器的单行式(您在 sData 中的数据,结果为 unsData):

var prms = new URLSearchParams(sData); unsData = {}; for ([k, v] of prms) unsData[k] = v;

顺便说一句:正如 MDN 文档所说,

<块引用>

以下两行是等价的:
for (const [key, value] of mySearchParams) {}
for (const [key, value] of mySearchParams.entries()) {}

答案 2 :(得分:1)

jQuery有一个serialize函数。

$("#form").serialize(); // Returns serialized string

参考:http://api.jquery.com/serialize/

答案 3 :(得分:1)

如果使用$('form'),表单中的所有元素都将被发送.serialize();

答案 4 :(得分:1)

如果要反序列化,则必须创建这样的函数;

File "Solution.py", line 4, in <module>
    lst = input().split()
EOFError: EOF when reading a line

此函数逆转serialize()并返回json数据。