Как установить несколько пар ключ-значение в один файл cookie?
Я использую эту строку, чтобы сразу установить пару пару ключ-значение в один файл cookie
document.cookie="username=John Smith; test1=ew; expires=Thu, 18 Dec 2013 12:00:00 GMT; path=/";
казалось, что test1
не установлен в файл cookie успешно, потому что, когда я пишу document.cookie
в консоли, он не печатал эту пару ключ-значение. Кто-нибудь знает, как установить пару пар ключ-значение в ONE cookie?
Ответы
Ответ 1
Не имеет смысла хранить несколько пар ключ-значение в одном cookie, потому что по определению cookie представляет одну пару ключевых слов.
Я считаю, что вы плохо понимаете как document.cookie
работает. Это не стандартная строка JS: когда вы ее устанавливаете, содержащееся в ней определение файла cookie добавлено в список существующих файлов cookie. То есть вы не можете установить два файла cookie одновременно с помощью этого API.
У вас есть два решения:
-
Используйте файл cookie для каждого значения ключа, которое вы хотите сохранить:
document.cookie = "myCookie=myValue";
document.cookie = "myOtherCookie=myOtherValue";
-
Сохраните один файл cookie с пользовательской сериализацией сложных данных, например JSON:
document.cookie = "myCookie=" + JSON.stringify({foo: 'bar', baz: 'poo'});
Ответ 2
На самом деле я думаю, что было бы лучше использовать
document.cookie = "myCookie=foo='bar'&baz='poo'; here is the rest of cookie specifications if you like..."
насколько я знаю, он также совместим с Asp
и Asp.Mvc
на стороне сервера:
string foo=Request.Cookies["myCookie"]["foo"]
Ответ 3
Создайте пользовательский объект, сериализуйте объект в строку JSON и сохраните сериализованную строку в файле cookie
function setCookie()
{
var customObject = {};
customObject.name = document.getElementById("txtName").value;
customObject.email = document.getElementById("txtEmail").value;
customObject.gender = document.getElementById("txtGender").value;
var jsonString = JSON.stringify(customObject);
document.cookie = "cookieObject=" + jsonString;
}
Метод JSON.stringify()
преобразует объект JavaScript в строку нотации объектов JavaScript (JSON).
Мы можем получить значения в функции getCookie()
, как показано ниже.
function getCookie()
{
var nameValueArray = document.cookie.split("=");
var customObject = JSON.parse(nameValueArray[1]);
document.getElementById("txtName").value = customObject.name;
document.getElementById("txtEmail").value = customObject.email;
document.getElementById("txtGender").value = customObject.gender;
}
Метод JSON.parse()
анализирует строку JSON и возвращает соответствующий объект.