Как установить/удалить куки с помощью jQuery?
Как установить и удалить куки с помощью jQuery? Например, как создать куки с именем test
и задать его значение равным 1
?
5 ответ(ов)
Обновление апрель 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. Оригинальный плагин, похоже, никуда не уходит.
Вы можете использовать следующий код для работы с 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
Вы можете использовать плагин, доступный по следующей ссылке:
https://plugins.jquery.com/cookie/
Чтобы записать куку, используйте следующий код:
$.cookie("test", 1);
Для доступа к установленной куке используйте:
$.cookie("test");
Вот мой глобальный модуль для работы с 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);
}
};
В этом модуле есть три основные функции:
Create(name, value, days)
: Создает cookie с указанным именем, значением и временем жизни (в днях). Если указан время жизни, cookie будет автоматически удалено через заданное количество дней.Read(name)
: Читает значение cookie по указанному имени. Если cookie с таким именем не найдено, функция возвращаетnull
.Erase(name)
: Удаляет cookie, вызывая функциюCreate
с отрицательным значением дня жизни.
Этот модуль обеспечивает простую работу с cookie, позволяя легко создавать, читать и удалять их.
Не делайте что-то вроде этого:
var a = $.cookie("cart").split(",");
Если куки не существует, отладчик выдаст не очень информативное сообщение, например, ".cookie is not a function".
Всегда сначала проверяйте наличие значения, а уже потом выполняйте split
. Например, так:
var a = $.cookie("cart");
if (a != null) {
var aa = a.split(",");
}
Получение выбранного текста из выпадающего списка (select) с помощью jQuery
Как проверить, скрыт ли элемент в jQuery?
Эквивалент document.createElement в jQuery?
Как выбрать элемент по имени с помощью jQuery?
Как удалить все CSS-классы с помощью jQuery/JavaScript?