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对象中存储的数据长度。

查看demo

在未使用jquery.jsoncookie.之前,我想当然的认为cookie能保存json对象,但调试之后,我发现结果并非我所料。查看资料,发现cookie不能存储json格式的数据。后来通过搜索发现了这个jquery.jsoncookie插件。本文只是个人应用jquery.jsoncookie.插件的一个总结,希望能对你有所启发。

原文地址:https://www.cnblogs.com/handboy/p/7158378.html