【问题标题】:how could I can I read an array I save in a cookie with jquery.cookie?我怎样才能用 jquery.cookie 读取我保存在 cookie 中的数组?
【发布时间】:2014-08-03 16:07:02
【问题描述】:

我正在使用 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");)

谢谢

【问题讨论】:

  • 不要为此使用$.param()。这会转义 URL 中的特殊字符。您可能想要序列化为 JSON。
  • 谢谢回复,那我应该怎么发呢?
  • 下面的两个答案向您展示了两种方法。

标签: javascript jquery json cookies


【解决方案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'));

【讨论】:

  • 如果你阅读了我之前的回答,这个插件支持你所建议的开箱即用......
【解决方案2】:

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

json

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

$.cookie.json = true;

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

【讨论】:

  • 我试过了,但我不知道该放在哪里,何时保存或何时阅读? (我在保存前试过)
  • @jpganz18 我猜你应该创建一个类似init.js 的文件,它可能会在 jQuery 之后添加到你的 HTML 源代码中,所以每个插件在你使用它时都已经用设置进行了初始化在实际代码中。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2016-06-11
  • 1970-01-01
  • 2020-10-19
  • 1970-01-01
  • 2020-12-15
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多