Как установить несколько пар ключ-значение в один файл 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 и возвращает соответствующий объект.