将临时数据保存在cookie中

时间:2012-09-05 13:31:04

标签: jquery cookies fifo

我正在一个网站上工作,我需要暂时保存一些字符串。

比如说我有4个字符串:

1. hello
2. world
3. foo
4. test

我需要实现一个FIFO(先进先出)系统,这意味着如果我添加一个新字符串,应该删除第一个(最旧的)项目。如何通过使用jQuery cookie插件实现这一点?

我使用以下内容来获取/设置cookie:

console.log( $.cookie("test") ); //get cookie
$.cookie("test", "hello", { expires: 7, path: '/' }); //set cookie

提前致谢。

2 个答案:

答案 0 :(得分:2)

我写了一些代码。它没有经过测试和运行,用记事本写的。只是一个例子。可以为cookie更改方法init和saveData。

   var myStorage = {
    data:[],
    init:function(){
        var json = localStorage.getItem('myData');
        if (json!=null) {
            this.data = jQuery.parseJSON(json);
        } else {
            this.data = [];
        }
    },
    addItem:function(val){
        this.data.push(val);
        this.saveData();
    },
    getItem:function(){
        var res = data[0];
        this.data = this.data.slice(1);
        this.saveData();
        return res;
    },
    saveData:function(){
        var json = JSON.stringify(this.data);
        localStorage.setItem('myData',json); 
    }


}

$(function(){
    myStorage.init();
});

答案 1 :(得分:1)

如果可能,请勿使用Cookie。在现代浏览器中有一个localStorage

此外,如果您正在使用某种结构,请为其创建js结构(数组,对象等)并使用它。

要保存到存储(cookie),请将此结构序列化为字符串,例如json。

我建议使用方法addValuegetValue创建js对象,它包装js数据存储并通过挂钩保存方法addValuesetValue以静默方式与永久存储同步。

一开始,您可以运行init(),它将从存储中获取数据并将其反序列化为js。