jQuery能够读写浏览器的cookies吗?

99

简单示例:我想在页面上放置一些项(如div或表格行),并允许用户单击它们以选择它们。在jQuery中似乎很容易实现。为了保存用户单击的哪些项(没有服务器端返回),我认为使用cookie是一种简单的解决方法。

  1. 这种情况下使用cookie的假设是否正确?
  2. 如果正确,jQuery API是否有比默认的JavaScript API更好的读写cookie信息的方法?
1. 这种情况下使用cookie的假设是正确的。 2. 是的,jQuery API提供了名为"jquery-cookie"的插件,可以更方便地读写cookie信息。您可以通过下载和引用此插件来使用它。
8个回答

53

设置 cookie 的默认 JavaScript "API" 很简单:

document.cookie = 'mycookie=valueOfCookie;expires=DateHere;path=/'

使用 jQuery cookie 插件的示例:

$.cookie('mycookie', 'valueOfCookie')

14
是的,编写cookie很容易,但读取它们有点麻烦,因为您需要分割字符串等。如果您已经在使用JQuery,则Cookie插件可能很有用......阅读cookie的一个讨厌之处是一些浏览器会删除最后的分号,而有些则不会......让其他人来处理这一切真不错。 - Peter Ajtai
8
哦,而且JQuery cookie插件只有40行JS代码……你可以编辑它以满足你的需求,这样你就不会感到进入了抽象危险区。 - Peter Ajtai
3
与要求的jQuery无关。Peter Ajtai的评论说明了为什么casademora要求jQuery插件而不是JavaScript。 - CallMeLaNN
4
这是最新的链接,供那些遇到死链接或插件.jquery.com网站故障的人使用:https://github.com/carhartl/jquery-cookie - Wiebe Tijsma

18

您需要使用Cookie插件,该插件为cookie函数提供了几个额外的签名。

$.cookie('cookie_name', 'cookie_value')用于存储短暂的cookie(仅存在于该会话范围内),而$.cookie('cookie_name', 'cookie_value', 'cookie_expiration")则创建一个持久性cookie,跨会话持续存在。有关JQuery cookie插件的更多信息,请参见http://www.stilbuero.de/2006/09/17/cookie-plugin-for-jquery/

如果要设置用于整个站点的cookie,则需要使用以下JavaScript代码:

document.cookie = "name=value; expires=date; domain=domain; path=path; secure"

1
根据本文撰写时的情况,似乎这个链接已经失效了。 - Mark Schultheiss

11

3
如果有人读链接时过于匆忙,请注意在“cookie”末尾添加的 's',以便将其与Alex Fort的答案区分开来。 - Patrick
2
在撰写此文时,这里有一个更好的链接:https://github.com/carhartl/jquery-cookie - Wiebe Tijsma
1
@Zidad,那不是Giver Of Cookies链接的同一个插件。他提供的链接现在在http://code.google.com/p/cookies/上。 - JAAulde
@JAAulde 啊,我没意识到。因为链接失效了 :) 谢谢! - Wiebe Tijsma

7
回答你的问题,是的。其他人已经回答了那部分,但是似乎你还在问这是否是最好的方法。
这可能取决于你正在做什么。通常情况下,用户会点击他们想要购买的商品(例如订购)。然后他们会点击购买或结账按钮。然后表格会发送到一个页面并处理结果。你可以使用cookie完成所有这些,但我认为这更加困难。
你可能需要考虑在另一个主题中发布你的第二个问题。

5

4

您可以在此浏览所有标记为“cookie”的jQuery插件:

http://plugins.jquery.com/plugin-tags/cookies

有很多选项可供选择。

请查看名为jQuery Storage的插件,它利用了HTML5的localStorage。如果localStorage不可用,则默认使用cookie。但是,它不允许您设置过期时间。


4

我也意识到,自第一版发布以来,Cookie插件开发已停止,不确定其是否兼容jQuery 1.4*。 - CallMeLaNN
该插件与jQuery 1.4兼容,因为自那时起扩展语法没有改变... - jQuery Lover

2
我已经成功编写了一个脚本,允许用户选择自己的语言,使用了Klaus Hartl的cookie脚本。这花费了我几个小时的工作时间,希望我能帮助其他人。

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