我正在使用jquery
开发客户端Web应用程序我想存储所有访问过的页面,我使用cookie
所以,我有两个要存储的元素:
我开始在cookie中创建数据:
Index.html:
if(!$.cookie("history")){
var url_history = document.location;
var title_history = $("html title").text();
$.cookie("historyURL", url_history);
$.cookie("historyTITLE", title_history);
}
anotherPage.html:
var url_history = document.location;
var title_history = $("html title").text();
$.cookie("historyURL", url_history);
$.cookie("historyTITLE", title_history);
问题是cookie的新值会覆盖旧值。
我想我应该设置一个对象,而不是字符串,如:
var objHistory = [];
objHistory.push({url:document.location, title: $("html title").text()})
$.cookie("history", objHistory);
现在我有另一个问题:
我无法从cookie中检索我的对象
当我尝试从cookie获取我的Object时,它显示一个字符串“object”而不是Object
是否可以在cookie中设置对象?
感谢您的帮助
答案 0 :(得分:4)
Cookie(具有有限的4K大小)是我尝试存储所访问页面数组的最后一个地方。由于其局限性,cookie将是我尝试使用的最后一种存储方法。如果您使用的是HTML5,为什么不为此目的使用localStorage?
教程:http://www.w3schools.com/html/html5_webstorage.asp
localStorage仅处理STRING键/值对。解决方法可以是在存储对象之前对其进行字符串化,然后在检索对象时对其进行解析:
var testObject = { 'URL': 1, 'TITLE': 2 };
localStorage.setItem('testObject', JSON.stringify(testObject));
var retrievedObject = localStorage.getItem('testObject');
console.log('retrievedObject: ', JSON.parse(retrievedObject));
答案 1 :(得分:3)
您始终可以将对象字符串化为JSON:
var jsonHistory = JSON.stringify(objHistory);
$.cookie("history", jsonHistory);
修改强>
简单演示(在Chrome和Firefox中测试):
(function(){
var o = JSON.parse('{"id":1,"value":"code.google.com"}');
var e = 'Thu Nov 10 2012 15:44:38';
document.cookie = 'myObj='+ JSON.stringify(o) +';expires=' + e;
})()
答案 2 :(得分:2)
我建议不要使用cookie来存储您正在使用的数据类型,因为Cookie基本上用于存储非常少量的数据,例如某些密钥,ID ...
您可以使用本地存储,因为本地存储限制为5 MB,也是可扩展的。此外,本地存储比cookie更安全,因为数据未发送到服务器。
答案 3 :(得分:-1)
您可以存储唯一的字符串。一种非常有限的字符串。您需要使用一些分隔符来存储这些值。看看Allowed characters in cookies你可以使用哪些。