0

在我的一个程序中,我设置了一个包含allowed_apps用户的 cookie。在谷歌浏览器中,当用户登录时,它会毫无问题地显示用户允许的应用程序。但它不适用于IE。当我在 IE 上调试它时,它说它cookie('allowed_apps')是空的。奇怪的是当我签入 Chromecookie('allowed_apps')时也是空的。但无论如何,这些应用程序都在 chrome 中运行。我清除了两个浏览器中的所有浏览历史记录并尝试过,但还是一样。两者都表明cookie('allowed_apps')是空的。但只有 chrome 像在cookie('allowed_apps'). 顺便说一句,我jquery.cookie.js用来管理 cookie。

在 user_manager.js

var perm_list = '';
var allowed_apps = [];

for (i=0; i<response_data[0].permissions.length; i++) {
    perm_list += response_data[0].permissions[i].permissions;
    if ("" != response_data[0].permissions[i].permissions) {
        allowed_apps.push(obj_common.str_replace("_permissions", "", response_data[0].permissions[i].app_name));
    }
}

$.cookie('allowed_apps', allowed_apps);

home.js得到了饼干

    var allowed_apps = $.cookie('allowed_apps').split(",");
4

1 回答 1

0

您当前正在将数组 , 写入allowed_appscookie;cookies 只能是一个字符串。在编写之前对数组进行编码。

有两种方法可以做到这一点:

  • $.cookie.json = true;//jQuery.cookie 会自动为你处理 json 中的编码和解码值
  • 写作时使用:$.cookie('allowed_apps', JSON.stringify(allowed_apps));
    阅读:var allowed_apps = JSON.parse($.cookie('allowed_apps'));

如果您将cookie.jsongetter 设置为

var allowed_apps = $.cookie('allowed_apps');
于 2013-11-13T04:38:53.443 回答