我想用jQuery序列化和取消序列化表单。
如何以序列化方式获取所有元素的所有属性?
答案 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)
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
答案 3 :(得分:1)
如果使用$('form'),表单中的所有元素都将被发送.serialize();
答案 4 :(得分:1)
如果要反序列化,则必须创建这样的函数;
File "Solution.py", line 4, in <module>
lst = input().split()
EOFError: EOF when reading a line
此函数逆转serialize()并返回json数据。