我正在使用使用cookie的jQuery开发应用程序。现在,它位于我的PC桌面上的application.html
。
但是,我无法存储和检索cookie。我按顺序在HTML文件中添加了jquery-1.7.1.min.js
,json2.js
和jquery.cookie.js
。
以下是我存储cookie的方式,持续7天:
$.cookie("people", JSON.stringify(people_obj_array), {expires: 7});
全局数组people_obj_array
看起来像
[
{
"name": "Adam",
"age": 1,
},
{
"name": "Bob",
"age": 2,
},
{
"name": "Cathy",
"age": 3,
},
]
当我使用alert(JSON.stringify(people_obj_array))
测试JSON加密时,它看起来很好:
但是,当我通过以下方式检索此cookie时
alert($.cookie("people"));
甚至在刷新页面之前,会弹出一个警告,其中显示" null。"该文本不应该是警告JSON字符串吗?我正确使用JQuery cookie库吗?
请注意,以下是我的测试方法:
$.cookie("people", JSON.stringify(people_obj_array), {expires: 7}); // store
alert($.cookie("people")); // attempt to retrieve
我有Firebug,我愿意做一些控制台测试。
答案 0 :(得分:11)
这可能是因为桌面上的文件导致了问题。浏览器通常通过根据收到的域及其路径提供cookie来表现。
您可能无法在设置后立即读取cookie:编写cookie涉及在HTTP请求中设置标头,同样,读取它们涉及读取HTTP响应中的标头。
尝试在网络服务器上托管您的网页,看看它是否适合您。
答案 1 :(得分:2)
如果你在使用cookies插件时遇到麻烦,为什么不组成自己的cookie功能呢?读,写和(可选)删除。
var createCookie = function(name, value, days) {
if (days) {
var date = new Date();
date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));
var expires = '; expires=' + date.toGMTString();
}
else var expires = '';
document.cookie = name + '=' + value + expires + '; path=/';
};
var readCookie = function(name) {
var nameEQ = name + '=';
var ca = document.cookie.split(';');
for (var i = 0; i < ca.length; i++) {
var c = ca[i];
while (c.charAt(0) == ' ') c = c.substring(1, c.length);
if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length, c.length);
}
return null;
};
var eraseCookie = function(name) {
createCookie(name, '', -1);
};
我无法对特定的插件发表评论,因为我从未使用过它。但是这些功能都可以工作并且已经过测试。
所以对你的例子来说:
createCookie("people", JSON.stringify(people_obj_array), 7); // store
alert(readCookie("people")); // retrieve
eraseCookie("people"); // remove
alert(readCookie("people")); // oo look i'm no longer here.
答案 2 :(得分:1)
从我的研究jquery.cookie.js
相当陈旧,并且似乎不再需要维护。您可能会使用this library获得更好的运气。它在Google Code上的描述是“带有jQuery绑定和JSON支持的Javascript Cookie库”,并包含了您尝试做的所有事情的方法!