2014-01-14 62 views
1

给定一个对象:如何存储JS对象中的cookie

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

我怎么可以存储在浏览器中的cookie,当有人填写与相应值的形式?当用户回到页面填写表单时,值应该填充cookie中的表单。

+4

'JSON.stringify()'/'JSON.parse()' –

+0

[纯JavaScript的可能重复 - 存储对象在cookie中](http://stackoverflow.com/questions/11344531/p URE-JavaScript的商店对象中的cookie的) –

+0

和[可我们分配对象为在JavaScript中的cookie?](http://stackoverflow.com/q/1276238/218196) –

回答

-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"); 
}; 
+1

方式复杂,一个简单的任务,认为你可能混淆了,而不是帮助..是所有需要一个JSON字符串OP ... – Mayhem

+0

我只是不喜欢JSON –

+0

抱歉,不得不投下来,我看到几个这里的问题,首先上面的代码不能直接运行蝙蝠..你需要删除换行符。其次,在名称/电子邮件或任何字符串的情况下..这将不容易转换回对象,而不使用正则表达式类型表达式..此外,如果我只是简单地将::添加到一个字符串,这将中断脚本更多..我只评论这一点,因为谷歌寻求答案的人应该有最好的方向来节省时间。 – Mayhem

0

扩展已经给(注释和定制JS方法)的答案......我想这个地方在工作示例...所以这里去...

首先,使用JSON允许您可以轻松地一个对象转换为从JSON,而无需使用你自己的方法。它是最常见的方式和人们熟知的标准,这些天。所以大多数语言都有JSON支持..

扩展通过subas提供的例子德兰 ...

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/