Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/83.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何使用jquery.cookie读取保存在cookie中的数组?_Javascript_Jquery_Json_Cookies - Fatal编程技术网

Javascript 如何使用jquery.cookie读取保存在cookie中的数组?

Javascript 如何使用jquery.cookie读取保存在cookie中的数组?,javascript,jquery,json,cookies,Javascript,Jquery,Json,Cookies,我正在使用jquery.cookie(),我在这方面遇到了很多问题,我正在尝试保存这种结构的数组 var obj = { 'row1' : { 'key1' : 'input1', 'key2' : 'inpu2' }, 'row2' : { 'key3' : 'input3', 'key4' : 'input4' } }; 但是当我想读的时候,我得到了这个 row1%5Bkey1%5D=input

我正在使用jquery.cookie(),我在这方面遇到了很多问题,我正在尝试保存这种结构的数组

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");)

谢谢

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

json

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

$.cookie.json=true


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

您不应该使用
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'));

不要为此使用
$.param()
。转义URL中特殊字符的。您可能想要序列化为JSON。感谢您的回复,那么我应该如何发送它?下面的两个答案向您展示了两种方法。我尝试过,但我不知道在哪里放置它,何时保存或何时阅读?(我在保存之前尝试过)@jpganz18我想你应该创建一个名为
init.js
的文件,它可能会在jQuery之后添加到你的HTML源代码中,所以当你在实际代码中使用它时,每个插件都已经用设置初始化了。如果你阅读了我之前的答案,此插件支持您开箱即用的建议。。。。。。