我怎么能读到一个用jquery.cookie保存在cookie中的数组?

时间:2014-08-03 07:39:28

标签: javascript jquery json cookies

我正在使用jquery.cookie(https://github.com/carhartl/jquery-cookie/tree/v1.4.1)并且我遇到了很多问题,我试图保存这个结构的数组

var obj = {
    'row1' : {
        'key1' : 'input1',
        'key2' : 'inpu2'
    },
    'row2' : {
        'key3' : 'input3',
        'key4' : 'input4'
    }
};

但是当我想阅读它时,我得到了这个

row1%5Bkey1%5D=input1&row1%5Bkey2%5D=inpu2&row2%5Bkey3%5D=input3&row2%5Bkey4%5D=input4

我是这样发送的:

$.cookie('listresult', $.param(obj), { expires: 10 });

最糟糕的是,有时是有效的,有时甚至是无效的,所以,我不知道什么是错的...知道如何发送和转换数据吗?

要阅读它我用这个

var cookieValue = $.cookie("listresult");

当我尝试这个时......不起作用

$.parseJSON($.cookie("listresult");)

由于

2 个答案:

答案 0 :(得分:1)

您不应使用jquery.param方法。它适用于HTTP(AJAX)请求,因此不是您的情况。您必须在撰写cookie时使用JSON.stringify并在阅读时使用JSON.parse

// write (save):
$.cookie('listresult', JSON.stringify(obj), { expires: 10 });

// read (restore):
var obj = JSON.parse($.cookie('listresult'));

答案 1 :(得分:0)

如果你仔细阅读jQuery插件的手册,你会发现:

  

JSON

     

打开作为cookie值传递的JSON对象的自动存储。   假设JSON.stringify和JSON.parse:

     

$ .cookie.json = true;

这样,当您设置整个cookie时,您的JavaScript对象将被序列化为JSON,并且当您检索该cookie时,它们将再次反序列化为JavaScript。