将对象设置为cookie并稍后检索它的属性

时间:2011-09-15 15:37:13

标签: jquery object plugins cookies

我正在使用jquery cookie plugin将对象存储在Cookie中。该对象包含各种属性,用于存储有关站点访问者的信息。有没有办法检索cookie并访问这些属性?或者我是否必须将每个数据存储在单独的cookie中?这是我的代码:

c.consumerID = data.LoginConsumer.ConsumerId;
c.surveyCount = data.LoginConsumer.SurveyCnt;
c.vehicleCount = data.LoginConsumer.VehicleCnt;
c.sid = data.LoginConsumer.SurveyId;
c.aid = data.LoginConsumer.ActivityId;
c.loggedIn = true;
$j.cookie('consumerCookie', c, { path: '/' });

console.log($j.cookie()); //WANT TO RETRIEVE THE VALUES OF THE OBJECT IN THE COOKIE HERE, LIKE c.sid

2 个答案:

答案 0 :(得分:1)

您可以将它全部存储在一个cookie中,但是您需要以某种方式序列化对象,可能是JSON。如果你去JSON路线,只需使用json2.js库。

另外,请记住单个cookie大小有限制。在大多数浏览器中都是4k。

根据您正在做的事情,以及您是否也使用PHP,您可能希望改为使用PHP sessions并将所有内容存储在$ _SESSION变量的属性中。这可以使用JSON通过简单的AJAX调用来检索。

答案 1 :(得分:1)

Cookies存储字符串,因此如果要存储来自对象的六个属性,则必须将每个属性单独存储为其自己的字符串并为每个属性指定一个名称,否则您需要将所有属性值组合成一个字符串

您可以使用JSON库对整个对象进行字符串化,然后在读取cookie时重新读取JSON。例如,要将所有数据存储在cookie中,它的工作方式如下:

$j.cookie('consumerCookie', JSON.stringify(c), { path: '/' });

而且,要重读它,你可以这样做:

var c = $j.parseJSON($j.cookie('consumerCookie'));

注意:jQuery没有内置字符串化,所以如果你使用stringify路由,对于旧浏览器,你必须确保有一个JSON.stringify功能。