【问题标题】:Get a cookie value (javascript)获取 cookie 值 (javascript)
【发布时间】:2014-07-01 17:36:56
【问题描述】:

所以我是 Javascript 新手,我正在尝试获取 cookie 值来跟踪测试。

我有六个问题,当一个问题完成时,我将“计数器”增加 1 个值,这样如果用户在第 4 个问题时失去连接,计数器将变为 4。然后,当他们重新连接时,我可以从 cookie 中获取该计数器编号并从问题四启动,而不是在问题一时重新启动用户。

这是我的cookie,计数器是存储问题编号的数字。

 document.cookie = "value1=" + one + ";value2" + two + ";value3=" + three + ";value4" + four + ";value5=" + five + ";value6=" + six + ";count=" + counter + ";expires=" + exp.toUTCString();

这是我试图弄清楚值是如何存储的,我尝试寻找计数器、“count”、“count=”和“count=6”

function getCookie(cookieName) {
            var name = cookieName + "=";
            var ca = document.cookie.split(';');
            for (var i = 0; i < ca.length; i++) {
                var c = ca[i].trim();
                if ((c.indexOf(i)) == (all the options listed above)) {
                    alert("found");
                }

            }
            return "undefined";
        }

我不知道什么存储在哪里。是的,数组应该按“;”分解通过 cookie 中的 split() 。当我在循环中对每个变量“i”调用警报时,我会得到诸如“counter=6”之类的值。

我在实际指定某种“if”语句来捕获计数器变量时遇到了麻烦。

谢谢!

【问题讨论】:

  • 有很多关于从JS访问cookie的教程,我相信他们都展示了如何获取你想要的cookie的值。
  • @Barmar 我已经尝试了很多,其中大多数都涉及拆分 cookie 字符串,但是我从那里不明白。或者当我只需要 cookie 中的 1 个值时,他们试图获取各种随机值。
  • 您希望这里的答案能告诉您什么不同吗?您将其拆分,然后循环遍历数组以查找所需的数组。如果你不能理解,也许你应该安装一个插件来为你自动化它。
  • @Barmar 好的,我已经添加了我最近所做的尝试。我只是无法弄清楚什么存储在哪里。是的,数组应该按“;”分解在饼干里。当我在循环中对每个变量“i”调用警报时,我得到了整个 cookie 的内容,例如“counter=6”,我在实际指定某种“if”语句来捕获时遇到了麻烦。计数器变量。

标签: javascript cookies


【解决方案1】:

你没有正确使用indexOf

function getCookie(cookieName) {
    var name = cookieName + "=";
    var ca = document.cookie.split(';');
    for (var i = 0; i < ca.length; i++) {
        var c = ca[i].trim();
        if ((c.indexOf(name)) == 0) {
            alert("found");
            return c.substr(name.length);
        }

    }
    alert("not found");
    return null;
}

【讨论】:

  • 啊,是的。我看到 c = ca[i],但 .indexOf(name) 是我感到困惑的地方。 ca 的每个数组索引是否包含“count=”或“value1=”或其他内容?我对 indexOf(name) 的帮助感到困惑。对不起,我学习缓慢。
  • split 创建一个数组,其中每个元素都是原始 cookie 字符串的子字符串。所以ca[i] 将类似于count=3value1=abcc.indexOf(name)返回namec中的位置,所以如果namecount=,它返回0如果ccount=3,它返回-1如果@98765433 987654337@.
【解决方案2】:

如果您将 cookie 转换为键值对,那么以这种方式访问​​ cookie 会更容易。您可以通过以下方式做到这一点:

  const cookiesArray = document.cookie.split(";").map((cookie) => cookie.trim());
  const cookiesHashmap = cookiesArray.reduce((all, cookie) => {
    const [cookieName, value] = cookie.split("=");
    return {
      [cookieName]: value,
      ...all,
    };
  }, {});

【讨论】:

    猜你喜欢
    • 2018-05-06
    • 1970-01-01
    • 2014-12-14
    • 2013-02-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多