如何在cookie中存储JS对象

时间:2014-01-14 20:08:49

标签: javascript jquery cookies

给出一个对象:

var object = {
        "key1" : Math.random()*10000000000000000,
        "key2" : "value",
        "key3" : "value",
    }

当有人填写带有相应值的表单时,如何将其存储在浏览器cookie中?当用户返回页面填写表单时,值应填充cookie中的表单。

2 个答案:

答案 0 :(得分:0)

扩展已经给出的答案(评论和自定义JS方法)......我想把它放在一个工作的例子中...所以这里......

首先,使用JSON可以轻松地将对象转换为JSON和从JSON转换而不必使用自己的方法..这是最常见的方式和现在众所周知的标准..所以大多数语言都有支持为JSON ..

扩展 subas chandran ...

提供的示例
var object={name : username.value, email : email.value, gender : gender.value};
var stringObj=JSON.stringify(object);

如此处http://jsfiddle.net/LLujbb2h/使其易于使用,如果您想处理字符串/数组和对象,则不受限制。您只需将其交给主对象即可完成所有工作。 ..那么为什么要重新发明轮子呢?

使用这里显示的非JSON方法http://jsfiddle.net/1bf4dg8o/有很多问题,比如从cookie中读回来处理对象..它只是一个字符串...例如,如果你说: :在你的名字/电子邮件/性别..这会破坏自定义语法......我会不惜一切代价避免这种方法!

简单地说,测试我创建的第一个小提琴,你会发现它很容易处理......

还可以使用浏览器上的检查器查看cookie,因为这有助于调试..

编辑 - 展示如何将cookie读回JS对象 http://jsfiddle.net/LLujbb2h/2/

答案 1 :(得分:-1)

var saveButton=document.getElementById("save");
var username=document.getElementById("Name");
var email=document.getElementById("Email");
var gender=document.getElementById("Gender");
function setCookie(value, exdays) {
    var d = new Date();
    d.setTime(d.getTime() + (exdays*24*60*60*1000));
    var expires = "expires="+d.toUTCString();
    document.cookie = "Username"+ "=" + value + "; " + expires;
    if(document.cookie)
        return true;
}
function objToString (obj) {
    var str = '';
    for (var p in obj) {
        if (obj.hasOwnProperty(p)) {
            str += p + '::' + obj[p] + '\n';
        }
    }
    return str;
}
saveButton.onclick=function () {
    // body...
    var object={name : username.value, email : email.value, gender : gender.value};
    var stringObj=objToString(object);
    alert(stringObj);
    if(setCookie(stringObj,1))
        alert("cookie set");
};