10

我想在页面中缓存以下 JSON 对象,以便可以在另一个页面上检索它。

var test = {
        "lists":["list1","list2","list3","list4","list5"],
        "maps": {  
            "key4":"value4","key3":"value3","key5":"value5","key2":"value2","key1":"value1"
        },
        "number1":123456789,
        "numberarray1":[1,2,3,4,5,6,7,8,9],
        "string1":"A",
        "stringarray1":["A1","B1"]
    }

如何缓存它并再次检索它?

这可能吗?如果没有,还有其他方法可以保存我的 JSON 对象,然后在另一个页面上检索它。

谢谢你。

4

3 回答 3

10

保存那美味的饼干

$.cookie("test-data", JSON.stringify(test));

把那个甜饼干拿回来

var test =  JSON.parse($.cookie("test-data"));

http://www.electrictoolbox.com/jquery-cookies/

于 2012-10-05T15:30:55.430 回答
4

除了提供的答案之外,在更复杂的场景中,我建议使用jStorage插件。

来自网站的描述:

jStorage 是一个跨浏览器键值存储数据库,用于在浏览器本地存储数据 - jStorage 支持所有主流浏览器,包括桌面(是的,甚至 Internet Explorer 6)和移动设备。此外,jStorage 与库无关,它可以很好地与同一网页上的任何其他 JavaScript 库配合使用,无论是 jQuery、Prototype、MooTools 还是其他东西。尽管您仍然需要在页面上拥有第三方库(Prototype、MooTools)或 JSON2 以支持旧 IE 版本。

jStorage 支持存储字符串、数字、JavaScript 对象、数组甚至原生 XML 节点。jStorage 还支持为自动过期的存储键设置 TTL 值,并且 - 最重要的是 - 当键已更改或发布/订阅来自相同或另一个选项卡/窗口的事件时通知其他选项卡/窗口,这使得 jStorage 也是本地 PubSub Web 应用程序的平台。

如果 jStorage 加载到页面 localStorage 和 sessionStorage polyfills 添加到 IE6 和 IE7 除了常规的 $.jStorage 方法。您可以将常规 setItem/getItem 方法与 polyfill 一起使用,但也可以使用 getter/setter - localStorage.mykey = myval; 对 jStorage 绝对有效。唯一的缺点是您不能使用 onstorage 事件,您需要退回到 listenKeyChange

jStorage 非常小,压缩后约为 10kB,压缩后约为 4kB。

于 2012-10-05T15:39:21.227 回答
1

您是在谈论 HTML 中的缓存吗?您始终可以使用LocalStorage,这将使其可用于同一域中的任何页面。

如果你将它与Modernizr和 cookie 结合起来,你最终会得到某种解决方案。

于 2012-10-05T15:25:51.707 回答