如何使用jQuery设置和取消设置cookie,例如创建一个名为test的cookie并将值设置为1?


当前回答

我认为Fresher给出了一个很好的方法,但是有一个错误

    <script type="text/javascript">
        function setCookie(key, value) {
            var expires = new Date();
            expires.setTime(expires.getTime() + (value * 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;
        }
   </script>

你应该在getTime()附近添加"value";否则cookie将立即过期:)

其他回答

2019年4月更新

读取/操作cookie不需要jQuery,所以不要使用下面的原始答案。

请访问https://github.com/js-cookie/js-cookie,使用那里不依赖jQuery的库。

基本的例子:

// Set a cookie
Cookies.set('name', 'value');

// Read the cookie
Cookies.get('name') => // => 'value'

详见github上的文档。


2019年4月前(老)

查看插件:

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

你可以这样做:

$.cookie("test", 1);

删除:

$.removeCookie("test");

此外,要在cookie上设置一个特定天数的超时(这里是10天):

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

如果省略expires选项,则cookie将成为会话cookie,并在浏览器退出时删除。

要涵盖所有选项:

$.cookie("test", 1, {
   expires : 10,           // Expires in 10 days

   path    : '/',          // The value of the path attribute of the cookie
                           // (Default: path of page that created the cookie).

   domain  : 'jquery.com', // The value of the domain attribute of the cookie
                           // (Default: domain of page that created the cookie).

   secure  : true          // If set to true the secure attribute of the cookie
                           // will be set and the cookie transmission will
                           // require a secure protocol (defaults to false).
});

读取cookie的值。

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

更新(2015年4月):

正如下面的评论所述,开发原始插件的团队已经在一个新项目(https://github.com/js-cookie/js-cookie)中删除了jQuery依赖项,该项目具有与jQuery版本相同的功能和通用语法。显然,原来的插件并没有去任何地方。

你可以在这里使用一个插件。

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

然后写一个饼干做 美元。饼干(“测试”,1);

访问设置cookie做 美元.cookie(“测试”);

与之前的答案相比,我减少了操作的数量,我使用以下方法。

function setCookie(name, value, expiry) {
    let d = new Date();
    d.setTime(d.getTime() + (expiry*86400000));
    document.cookie = name + "=" + value + ";" + "expires=" + d.toUTCString() + ";path=/";
}

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

function eatCookie(name) {
    setCookie(name, "", -1);
}

你可以在Mozilla网站上使用这个库

你可以像这样设置和获取饼干

docCookies.setItem(name, value);
docCookies.getItem(name);

我知道有很多很好的答案。通常,我只需要读取cookie,不希望通过加载额外的库或定义函数来增加开销。

下面是如何在一行javascript中读取cookie。我在Guilherme Rodrigues的博客文章中找到了答案:

('; '+document.cookie).split('; '+key+'=').pop().split(';').shift()

这读取cookie命名为key,漂亮,干净和简单。