В одной из моих программ я устанавливаю cookie, который содержит allowed_apps
для пользователя. В Google Chrome, когда пользователь входит в систему, он без проблем обнаруживает разрешенные приложения для пользователя. Но IE не работает. Когда я отлаживал его в IE, он говорит, что cookie('allowed_apps')
пуст. Странная вещь, когда я проверил в Chrome cookie('allowed_apps')
тоже был пуст. Но все-таки приложения работают в хроме. Я очистил всю историю просмотров в обоих браузерах и попытался, но все тот же. Оба показывают, что cookie('allowed_apps')
пуст. Но только хром работает, как есть некоторая ценность в 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
я получаю файл cookie
var allowed_apps = $.cookie('allowed_apps').split(",");
Вы в настоящее время пишете массив, allowed_apps
, в файл cookie; cookie может быть только строкой. Кодируйте массив перед записью.
Два способа сделать это:
$.cookie.json = true;
//jQuery.cookie автоматически обрабатывает значения кодирования и декодирования для вас в json$.cookie('allowed_apps', JSON.stringify(allowed_apps));
var allowed_apps = JSON.parse($.cookie('allowed_apps'));
Если вы установите cookie.json
измените getter на просто
var allowed_apps = $.cookie('allowed_apps');
localStorage
который по умолчанию имеет ограничение 5 МБ
$.cookie