使用jQuery创建、读取和删除cookies

217

有人可以帮我吗?如何使用jQuery创建、读取和删除一些cookie?


请参考以下链接获取示例:http://www.coding-issues.com/2016/03/create-cookie-using-jquery.html - Ranadheer Reddy
4个回答

377

使用JavaScript Cookie插件

设置cookie

Cookies.set("example", "foo"); // Sample 1
Cookies.set("example", "foo", { expires: 7 }); // Sample 2
Cookies.set("example", "foo", { path: '/admin', expires: 7 }); // Sample 3

获取cookie

alert( Cookies.get("example") );

删除cookie

Cookies.remove("example");
Cookies.remove('example', { path: '/admin' }) // Must specify path if used when setting.

@RameshSoni,我尝试在Rails中使用这个插件,但是它对我没有起作用。你知道是否存在与Rails 4兼容的问题吗?谢谢。 - jackerman09
1
@jackerman09 好的,这是一个与jQuery一起使用的客户端插件。无论您是否使用Rails都没有关系。您能否提供更多有关您的问题的详细信息? - Ramesh Soni
@RameshSoni,我特别指的是https://github.com/RyanScottLewis/jquery-cookie-rails,我意识到你上面并没有特别提到它,但是当我在Gemfile和application.js中包含它(按照安装说明所说,在//= require jQuery之后立即包含),每次加载应用程序时都会出现有关缺少文件的错误。如果我没记错的话,错误信息大概是"Sprockets::FileNotFound"(或类似的内容,我现在不在我的开发计算机上)。谢谢! - jackerman09
8
这里有一个更新版本,网址是https://github.com/js-cookie/js-cookie。API有些不同,请注意。 - Sam Watkins
在 Laravel 中也无法工作。 - StealthTrails
原生JavaScript提供了一种非常简单的方式来访问Cookie,无需使用jQuery,希望这可以帮到你。 https://www.w3schools.com/js/js_cookies.asp 例如:document.cookie - Samuel Chan

137

据我所知,没有直接的支持,但你可以使用普通的javascript来实现:

// Cookies
function createCookie(name, value, days) {
    if (days) {
        var date = new Date();
        date.setTime(date.getTime() + (days * 24 * 60 * 60 * 1000));
        var expires = "; expires=" + date.toGMTString();
    }
    else var expires = "";               

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

function readCookie(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;
}

function eraseCookie(name) {
    createCookie(name, "", -1);
}

您可以像下面这样访问:

createCookie("test","test",1); // to create new cookie

readCookie("test"); // to retrive data from cookie

eraseCookie("test"); // will delete that cookie

1
我一直在使用这个脚本,但是它不起作用。 - Agus Puryanto
@Agus... 这里运行良好,我在生产项目中使用它,它们运行得非常好!你遇到了什么错误? - balexandre
6
好的,JavaScript是jQuery的基础!许多插件中都有相同的代码。+1 - Piotr Kula
1
跨浏览器的正确性是网页开发中持续存在的问题。 cookie是否被统一处理,足以直接在任何地方使用 document.cookie吗?您能说出这已经在哪些浏览器上进行了测试吗? - doug65536
在Opera 29,Firefox 38,Chrome 42上运行良好。IE 11不可用。 - vidriduch
显示剩余2条评论

11

5

13
因为回答过于聪明而被踩。 - Josh Brown
3
为链接提供上下文 - 鼓励引用外部资源的链接,但请添加链接周围的上下文,以便其他用户了解其存在的原因和内容。请始终引用重要链接的最相关部分,以防目标网站无法访问或永久关闭。 - Luke Stevenson

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接