【发布时间】:2011-07-24 10:39:21
【问题描述】:
我想将表单存储在客户端,在 json 中存储在 cookie 中,然后将其反序列化回表单。 我在做什么:
序列化为 JSON:
function formToJSON(selector) {
var form = {};
$(selector).find(':input[name]:enabled').each(function () {
var self = $(this);
var name = self.attr('name');
if (name.indexOf('TextBox', 0) == 0) {
if (form[name]) {
form[name] = form[name] + ',' + self.val();
}
else {
form[name] = self.val();
}
}
});
return form;
}
然后在表单更改时,我正在尝试将表单保存到 cookie:
$('#form1 :input').change(function () {
var eba = formToJSON($('#form1'));
$.cookie.set('fo', eba, {json:true});
var a = $.cookie.get('fo',true);
alert(a);
//$.cookie.set('form123', { "ksf": "saf", "tt": "" }, { json: true });
//var b = $.cookie.get('form123', true);
//alert(JSON.stringify(b));
});
在调试器中 - eba 是 json 对象,但 alert(a) 给出 null。 注释代码有效,这个 json 序列化,我从 cookie 中得到它。 但是为什么代码对表单不起作用??? 来自 jquery.com 的 cookie 插件
【问题讨论】:
-
我立即看到的两个问题:第一个选择器的开头不应有 ':',您也可以跳过
[name]位。其次,当您调用formToJSON时,您只需要传递一个字符串,尽管后一个不会导致问题(只是效率低下)。
标签: javascript jquery json serialization cookies