繁体   English   中英

获取 cookie 值 (javascript)

[英]Get a cookie value (javascript)

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

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

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

 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”语句来仅捕获计数器变量时遇到了麻烦。

谢谢!

您没有正确使用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;
}

如果您将 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,
    };
  }, {});

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM