13

Как установить/удалить куки с помощью jQuery?

8

Как установить и удалить куки с помощью jQuery? Например, как создать куки с именем test и задать его значение равным 1?

5 ответ(ов)

18

Обновление апрель 2019

jQuery не нужен для чтения/манипуляции куки, поэтому не используйте оригинальный ответ ниже.

Перейдите на сайт https://github.com/js-cookie/js-cookie и используйте библиотеку, которая не зависит от jQuery.

Простые примеры:

// Установить куки
Cookies.set('name', 'value');

// Прочитать куки
Cookies.get('name') => // => 'value'

Смотрите документацию на GitHub для получения деталей.


До апреля 2019 (старое)

Смотрите плагин:

https://github.com/carhartl/jquery-cookie

Вы можете сделать следующее:

$.cookie("test", 1);

Чтобы удалить куки:

$.removeCookie("test");

Кроме того, чтобы установить время жизни куки на определенное количество дней (10 в данном случае):

$.cookie("test", 1, { expires: 10 });

Если параметр expires будет опущен, куки станет сессией и будет удалено при закрытии браузера.

Чтобы охватить все параметры:

$.cookie("test", 1, {
   expires: 10,           // Истекает через 10 дней

   path: '/',             // Значение атрибута path куки
                          // (По умолчанию: путь страницы, создавшей куки).

   domain: 'jquery.com',  // Значение атрибута domain куки
                          // (По умолчанию: домен страницы, создавшей куки).

   secure: true           // Если установлено в true, то атрибут secure куки
                          // будет установлен, и передача куки будет
                          // требовать защищенного протокола (по умолчанию false).
});

Чтобы вернуть значение куки:

var cookieValue = $.cookie("test");

ОБНОВЛЕНИЕ (апрель 2015):

Как указано в комментариях ниже, команда, работавшая над оригинальным плагином, убрала зависимость от jQuery в новом проекте (https://github.com/js-cookie/js-cookie), который имеет такую же функциональность и общий синтаксис, как версия для jQuery. Оригинальный плагин, похоже, никуда не уходит.

1

Вы можете использовать следующий код для работы с cookies в JavaScript:

<script type="text/javascript">
    function setCookie(key, value, expiry) {
        var expires = new Date();
        expires.setTime(expires.getTime() + (expiry * 24 * 60 * 60 * 1000));
        document.cookie = key + '=' + value + ';expires=' + expires.toUTCString();
    }

    function getCookie(key) {
        var keyValue = document.cookie.match('(^|;) ?' + key + '=([^;]*)(;|$)');
        return keyValue ? keyValue[2] : null;
    }

    function eraseCookie(key) {
        var keyValue = getCookie(key);
        setCookie(key, keyValue, '-1');
    }
</script>

Вы можете установить cookie следующим образом:

setCookie('test', '1', '1'); //(key, value, expiry in days)

Чтобы получить cookie, используйте следующий код:

getCookie('test');

И наконец, вы можете удалить cookie так:

eraseCookie('test');

Надеюсь, это будет полезно кому-то 😃

EDIT:

Если вы хотите установить cookie для всех путей/страниц/каталогов, добавьте атрибут path к cookie:

function setCookie(key, value, expiry) {
    var expires = new Date();
    expires.setTime(expires.getTime() + (expiry * 24 * 60 * 60 * 1000));
    document.cookie = key + '=' + value + ';path=/' + ';expires=' + expires.toUTCString();
}

Спасибо, vicky

0

Вы можете использовать плагин, доступный по следующей ссылке:

https://plugins.jquery.com/cookie/

Чтобы записать куку, используйте следующий код:

$.cookie("test", 1);

Для доступа к установленной куке используйте:

$.cookie("test");
0

Вот мой глобальный модуль для работы с cookie:

var Cookie = {   

   Create: function (name, value, days) {
       var expires = "";

       if (days) {
           var date = new Date();
           date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));
           expires = "; expires=" + date.toGMTString();
       }

       document.cookie = name + "=" + value + expires + "; path=/";
   },

   Read: function (name) {
       var nameEQ = name + "=";
       var ca = document.cookie.split(";");

       for (var i = 0; i < ca.length; i++) {
           var c = ca[i];
           while (c.charAt(0) == " ") c = c.substring(1, c.length);
           if (c.indexOf(nameEQ) == 0) return c.substring(nameEQ.length, c.length);
       }

       return null;
   },

   Erase: function (name) {
       Cookie.create(name, "", -1);
   }

};

В этом модуле есть три основные функции:

  1. Create(name, value, days): Создает cookie с указанным именем, значением и временем жизни (в днях). Если указан время жизни, cookie будет автоматически удалено через заданное количество дней.
  2. Read(name): Читает значение cookie по указанному имени. Если cookie с таким именем не найдено, функция возвращает null.
  3. Erase(name): Удаляет cookie, вызывая функцию Create с отрицательным значением дня жизни.

Этот модуль обеспечивает простую работу с cookie, позволяя легко создавать, читать и удалять их.

0

Не делайте что-то вроде этого:

var a = $.cookie("cart").split(",");

Если куки не существует, отладчик выдаст не очень информативное сообщение, например, ".cookie is not a function".

Всегда сначала проверяйте наличие значения, а уже потом выполняйте split. Например, так:

var a = $.cookie("cart");
if (a != null) {
    var aa = a.split(",");
}
Чтобы ответить на вопрос, пожалуйста, войдите или зарегистрируйтесь