4

我正在使用 jquery 开发客户端 Web 应用程序

我想存储所有访问过的页面,我使用 cookie

所以,我有两个元素要存储:

  • 页面网址
  • 页面标题

我开始在 cookie 中创建数据:

索引.html:

if(!$.cookie("history")){
        var url_history = document.location;
        var title_history = $("html title").text();
        $.cookie("historyURL", url_history);
        $.cookie("historyTITLE", title_history);
    }

另一个页面.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 中获取我的对象时,它显示一个字符串“对象”而不是对象

是否可以在 cookie 中设置对象?

感谢您的帮助

4

4 回答 4

5

您始终可以将对象字符串化为 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;
        })()
于 2012-11-08T13:53:28.420 回答
5

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));
于 2012-11-08T14:02:01.850 回答
2

我建议不要使用 cookie 来存储您正在使用的数据类型,因为 cookie 基本上是为了存储非常少量的数据,例如一些密钥、id ...

您可以改用本地存储,因为本地存储限制为 5 MB,这也是可扩展的。此外,本地存储比 cookie 更安全,因为数据不会发送到服务器。

于 2016-06-14T09:47:18.120 回答
-1

您只能存储字符串。一种非常有限的字符串类型。您需要使用一些分隔符来存储这些值。查看cookie 中允许使用的字符,您可以使用哪些字符。

于 2012-11-08T14:06:13.350 回答