如何在cookie中保存JSON数据?
我的JSON数据看起来像这样
$("#ArticlesHolder").data('15', {name:'testname', nr:'4',price:'400'});
$("#ArticlesHolder").data('25', {name:'name2', nr:'1', price:'100'});
$("#ArticlesHolder").data('37', {name:'name3', nr:'14', price:'60'});
Run Code Online (Sandbox Code Playgroud)
我想做点什么
var dataStore = $.cookie("basket-data", $("#ArticlesHolder").data());
Run Code Online (Sandbox Code Playgroud)
和检索数据我想将其加载到$("#ArticlesHolder")像
$.each($.cookie("basket-data"), function(i,e){
$("#ArticlesHolder").data(i, e);
});
Run Code Online (Sandbox Code Playgroud)
有没有人知道我是在正确的轨道上还是应该以其他方式完成?简单地说,我如何从cookie中提取和提取json数据?
我想用JQuery删除cookie; 我试过这个
$.cookie('name', '', { expires: -1 });
Run Code Online (Sandbox Code Playgroud)
然后我刷新页面,cookie仍然存在:
alert('name:' +$.cookie('name'));
Run Code Online (Sandbox Code Playgroud)
为什么?谢谢
我想要:
注意:我使用的是jQuery 1.4.2和jQuery cookie插件.
有没有人对我如何做到这一点有任何建议?
我有一个javascript对象列表:
var people = [
{ 'name' : 'Abel', 'age' : 1 },
{ 'name' : 'Bella', 'age' : 2 },
{ 'name' : 'Chad', 'age' : 3 },
]
Run Code Online (Sandbox Code Playgroud)
我尝试使用jQuery $ .cookie()将它们存储在浏览器cookie中:
$.cookie("people", people);
Run Code Online (Sandbox Code Playgroud)
然后,我检索此cookie,然后尝试将另一个对象推入其中:
var people = $.cookie("people");
people.push(
{ 'name' : 'Daniel', 'age' : 4 }
);
Run Code Online (Sandbox Code Playgroud)
但是,这不起作用; 我在Firebug中分析了这段代码,并且控制台注意到它people是一个string("[object Object],[object Object],[object Object]")并且push函数不存在.
到底是怎么回事?存储和检索对象列表的正确方法是什么?
我正在尝试确定如何使用$ .cookie保存可折叠面板的折叠状态.
到目前为止,这个问题一直有用,但仍然缺少最终解决方案.
到目前为止我找到的任何解决方案都只保存了最后一个下拉面板,因此当重新加载页面时,唯一保存的面板是最后一个.
我需要的是保存所有滚动的面板而不是一个.
链接到Github上的jCookie插件.
链接到JSFiddle的演示
UPDATE
有人建议LocalStorage是我想要实现的更合适的解决方案.如果您可以评论为什么以及本地存储是什么,将非常感激.
更新2
因为有人建议本地存储比使用cookie来改善这个问题.选定的答案基于此.然而,正如Robin所提到的,在HTTPS站点上使用此技术存在缺点.
HTML
<div class="panel panel-default">
<div data-toggle="collapse" data-target="#panel1" class="panel-heading collapsed">
<h4 class="panel-title">
<a> Panel 1 </a>
</h4>
</div>
<div id="panel1" class="panel-collapse collapse">
<div class="panel-body">
</div>
</div>
</div>
<div class="panel panel-default">
<div data-toggle="collapse" data-target="#panel2" class="panel-heading collapsed">
<h4 class="panel-title">
<a> Panel 2 </a>
</h4>
</div>
<div id="panel2" class="panel-collapse collapse">
<div class="panel-body">
</div>
</div>
</div>
<div class="panel panel-default">
<div data-toggle="collapse" data-target="#panel3" class="panel-heading collapsed">
<h4 class="panel-title">
<a> Panel 3 </a> …Run Code Online (Sandbox Code Playgroud) 如何设置我的cookie在30秒或1米后过期?这是我的代码:
$.cookie('username', username, { expires: 14 }); // expires after 14 days
Run Code Online (Sandbox Code Playgroud) 我正在使用使用cookie的jQuery开发一个应用程序.现在,它位于application.html我的PC桌面上.
但是,我无法存储和检索cookie.我按顺序包含了jquery-1.7.1.min.js,json2.js并且jquery.cookie.js在我的HTML文件中.
这是我如何存储cookie持续7天:
$.cookie("people", JSON.stringify(people_obj_array), {expires: 7});
Run Code Online (Sandbox Code Playgroud)
全局数组people_obj_array看起来像
[
{
"name": "Adam",
"age": 1,
},
{
"name": "Bob",
"age": 2,
},
{
"name": "Cathy",
"age": 3,
},
]
Run Code Online (Sandbox Code Playgroud)
当我测试JSON加密时alert(JSON.stringify(people_obj_array)),它看起来很好:

但是,当我通过以下方式检索此cookie时:
alert($.cookie("people"));
Run Code Online (Sandbox Code Playgroud)
甚至在刷新页面之前,会弹出一个"null"的警告.文本不应该是警告JSON字符串吗?我正确使用JQuery cookie库吗?
只是为了澄清,这是我测试的方式:
$.cookie("people", JSON.stringify(people_obj_array), {expires: 7}); // store
alert($.cookie("people")); // attempt to retrieve
Run Code Online (Sandbox Code Playgroud)
我有Firebug,我愿意做一些控制台测试.
我正在尝试创建一个Bootstrap警报框,记住用户单击关闭按钮的时间.我想我需要将这些信息存储在cookie中.理想情况下,cookie只会持续当前会话,然后他们返回该框将再次出现.
我正在使用jQuery-Cookie插件.我把它上传到了/jquery-cookie-master.插件可以在这里找到.
这是我到目前为止通过以下代码找到的.
<script src="http://ajax.googleapis.com/ajax/libs/jquery/1.7.2/jquery.min.js"></script>
<script src="/jquery-cookie-master/jquery.cookie.js"></script>
<script>
function runOnLoad(){
if($.cookie('alert-box') == null) {
$.cookie('alert-box', 'open', { expires: 7 });
} else if($.cookie('alert-box') == 'close') {
$(".close").hide();
}
</script>
Run Code Online (Sandbox Code Playgroud)
HTML:
<body onload="runOnLoad()">
<div class="alert alert-info">
<button type="button" class="close" data-dismiss="alert" href="hideMe.php" onclick="hideMe()">×</button>
<p>
<strong>FORUM UPGRADE:</strong> In light of our recent surge in popularity we upgraded our forum and unfortunately lost all the old threads in the process.
</p>
<p>
In an effort to kick-start the …Run Code Online (Sandbox Code Playgroud) 首先,设置一个cookie:
jQuery.cookie('monster', 'big', { path : '/sesame/'});
Run Code Online (Sandbox Code Playgroud)
接下来,尝试阅读它:
jQuery.cookie('monster');
Run Code Online (Sandbox Code Playgroud)
Firefox告诉我,cookie确实已经设置好了.值是big,路径是/sesame/.然而,当我试图读取cookie时,它将无法工作.
问题的替代版本:如何在读取 cookie 时指定路径?
作为一个实验,我使用了以下语法,但它设置了一个cookie而不是一个cookie.
$.cookie('cookie_name', { path: '/path/' });
Run Code Online (Sandbox Code Playgroud) 我知道这个问题已被问了一千次,但没有一个答案真的能给我我正在寻找的东西.我使用jQuery cookie来存储一些信息,但我希望它们在浏览器关闭时过期.window.unload不是一个可行的选择(读:不起作用.)
我的问题是:实际上可以将cookie设置为在浏览器关闭时过期,就像会话一样?如果是这样,有谁知道怎么样?
更新:事实证明它很简单,而不是通过到期:0(这不起作用),只是根本没有通过任何到期.嗯,这解释了为什么没有太多问题.
谢谢大家.