将通过AJAX检索的JSON存储在cookie中

时间:2014-04-18 17:21:46

标签: jquery jquery-cookie

我想在cookie中保存一些json数据,并使用jquery cookie在不同的页面中检索它 以下是我获取数据并存储的方法。

        $.ajax({
            type: "POST",
            url: "V2_Loader.aspx/GetMenuData",
            data: "{id:" + id + "}",
            contentType: "application/json; charset=utf-8",
            dataType: "json",
            success: function (response) {
            menus = response.d;
            $.cookie('menu-data', menus);
          }
     }

在另一个页面中,我尝试像这样检索它。

 menus = JSON.parse($.cookie("menu-data"));

但我得到了#34; JavaScript运行时错误:字符无效" 我试过打开json旗帜 $ .cookie.json = true; 在存储它之前以及当我尝试将其打印出来时。 像这样

        var result;
            for (var i = 0; i < menus.length; i++) {
                result += menus[i].menuText + ', ';
            }
            alert(result);

我得到一个未定义的数组,如printed array

这就是我的回复看起来像response

的方式

有关我应该如何存储并检索它的任何建议?

2 个答案:

答案 0 :(得分:1)

$.cookie('menu-data', menus);中的

menus不是json。你需要把它变成json。

$.cookie('menu-data', JSON.stringify(menus));

由于json的大小,您可能会遇到cookie长度限制。

答案 1 :(得分:0)

作为使用Cookie的替代解决方案,您可以在浏览器中使用sessionStorage

$ajax({
  ...,
  success: function (response) {
    sessionStorage.setItem('menu-data', JSON.stringify(response.d));
  }
});

var menus = JSON.parse(sessionStorage.getItem('menu-data'));