将表单序列化为json并存储在cookie中

时间:2011-03-28 12:05:30

标签: javascript jquery json serialization cookies

我希望将表单存储在客户端,在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插件

2 个答案:

答案 0 :(得分:2)

使用此库来字符串化/解析JSON http://json.org/js.html

请记住,Cookie上有大约4KB的大小限制,http://support.microsoft.com/kb/306070

答案 1 :(得分:-2)

无法使用javascript(除了您自己的域名)读取AFAIK浏览器Cookie,以防止Cross Site Reeuqest Forgery 但你仍然可以设置它们。