cookie中存储json
原文发布时间为:2009-12-14 —— 来源于本人的百度文章 [由搬家工具导入]
http://www.denisdeng.com/?p=563
最近的一个项目需要在cookie中存储json对象,查看网络资料,没有找到很好的例子,最终利用jquery.jsoncookie.js、jquery.cookie.js和json2.js完成了该项目的需求,在http://lab.distilldesign.com/json-cookie/有关于jquery.jsoncookie.js使用的一些简单的方法,而本人所提到的项目有以下的需求:
- 用户可以将数据存储于cookie之中;
- 用户也可以删除cookie中已经存在的对象;
- 用户可以修改cookie中对象相应的属性值。
先看看js代码:
01.
var
jsonCookie = {
02.
jsonName:
'job'
,
03.
jsonNum:
'num'
,
04.
store:
function
(id,name,address){
05.
var
num = jsonCookie.getNum();
06.
var
json = jsonCookie.getJson();
07.
if
(!json[id]){
08.
json[id] = {};
09.
json[id].name = name;
10.
json[id].address = address;
11.
num++;
12.
$.JSONCookie(jsonCookie.jsonName,json);
13.
$.cookie(jsonCookie.jsonNum,num);
14.
}
15.
},
16.
remove:
function
(id){
17.
var
num = jsonCookie.getNum();
18.
var
json = jsonCookie.getJson();
19.
if
(json[id]){
20.
delete
json[id];
21.
num--;
22.
$.JSONCookie(jsonCookie.jsonName,json);
23.
$.cookie(jsonCookie.jsonNum,num);
24.
}
25.
},
26.
modify:
function
(id,key,value){
27.
var
json = jsonCookie.getJson();
28.
if
(json[id]){
29.
json[id][key] = value;
30.
$.JSONCookie(jsonCookie.jsonName,json);
31.
}
32.
},
33.
getJson:
function
(){
34.
var
json = $.JSONCookie(jsonCookie.jsonName);
35.
return
(json ==
null
) ? {} : json;
36.
},
37.
getNum:
function
(){
38.
var
num = $.cookie(jsonCookie.jsonNum);
39.
return
(num ==
null
) ? 0 : num;
40.
}
41.
}
在jsonCookie 对象中,有两个属性:jsonName和jsonNum。
- jsonName定义json对象的名字;
- jsonNum定义json对象中存储的个数。
另外有五个方法。
- store(id,name,address) 该函数将数据存储到cookie中,接受三个参数。当然,你可以自己根据需要来增加参数的数量。
- remove(id) 该函数用来删除数据,接受一个参数。要删除对象的id;
- modify(id,key,value) 该函数修改已存对象的属性值,接受三个参数。一个id和相应的要修改对象的名字和新的属性值;
- getJson() 该函数获得cookie中的json对象;
- getNum() 该函数取得cookie中存储的json对象中存储的数据长度。
在未使用jquery.jsoncookie.之前,我想当然的认为cookie能保存json对象,但调试之后,我发现结果并非我所料。查看资料,发现cookie不能存储json格式的数据。后来通过搜索发现了这个jquery.jsoncookie插件。本文只是个人应用jquery.jsoncookie.插件的一个总结,希望能对你有所启发。