使用此JavaScript将cookie加载到变量中

时间:2012-11-12 23:30:16

标签: javascript jquery regex cookies

我正在从这个线程开始工作:

What is the shortest function for reading a cookie by name in JavaScript?

这表明可以使用以下代码在JavaScript中读取cookie:

function read_cookie(key)
{
    var result;
    return (result = new RegExp('(?:^|; )' + encodeURIComponent(key) + '=([^;]*)').exec(document.cookie)) ? (result[1]) : null;
}

我有一个名为“country”的cookie,其值为两个字母,例如“AZ”。我想知道如何读取cookie的值并将其放入一个名为cookie_country的变量中。这个正则表达式略高于我,我不知道从哪里开始。

2 个答案:

答案 0 :(得分:3)

此...

var cookie_country = read_cookie('country');

......对于这种情况应该足够了。 )这个函数的重点(和许多其他函数一样)是它提供了一个工具,用于通过某个字符串键(document.cookie,在你的情况下)从'country'字符串中提取值:你不是需要知道这个工具究竟是如何工作的,除非它破裂。 )

......但无论如何,或许知道这一点也许会很有趣。 )document.cookie实际上是一个包含以分号分隔的cookie列表(其键及其值)的字符串。这里还有read about it(MDN)。

正则表达式基本上捕获此字符串的一部分,该字符串在行的开头或某些;的末尾匹配给定的字符串,然后再继续,直到另一个分号的字符串结尾出现。

例如,如果key参数等于country,则正则表达式将如下所示:

/(?:^|; )country=([^;]*)/

...它将捕获与document.cookie字符串相关联的country中存储的

答案 1 :(得分:0)

我猜您必须逐行阅读Cookie。

var rows = document.cookie.split(;);
for (i=0;i<rows.length;i++)
{
    var firstrow = rows[i].substr(0,rows[i].indexOf("="));
}

创建时你可以将变量放在标识符之间,比如AZ 正则表达式应如下所示:&#39; ## [AZ] {2} ##&#39;

当然,我可能完全错了:)

希望这有帮助。