读取从NewCookie()创建的cookie

时间:2015-05-06 06:52:53

标签: javascript cookies

我使用Newcookie()创建了一个cookie,我可以通过浏览器访问它,如下所示。现在我需要阅读cookie enter image description here

    function getCookieValue(cookieName) {
    console.log("=====getCookieValue=======");
    var name = cookieName + "=";
    var cookies = document.cookie.split(';');
    console.log("=====ALL cookies======="+cookies);
    if (!cookies) {
        return null;
    }
    console.log("=====cookies.length======="+cookies.length);
    for (var i = 0; i < cookies.length; i++) {
        var cookie = cookies[i];
        console.log("=====cookies======="+cookies[0]);
        if (cookie.indexOf(name) == 0) {
            return cookie.substring(name.length, cookie.length);
        }
    }
    return null;
}

但是通过使用那种方法,我无法读取cookie。请就此向我提出建议。 感谢

2 个答案:

答案 0 :(得分:1)

你的功能几近完美。你只需要改变这一行:

document.cookie.split(';');

您可以通过运行以上语句来检查控制台中的结果:您将获得一个包含所有cookie 的数组,但每个数据库前面都有一个空格。这就是比较的原因

if (cookie.indexOf(name) == 0)

不能像预期的那样工作,因为预期的子字符串不是从位置0开始,而是从1开始。

因此,您需要分割Cookie列表,而不是单个分号,而是分号和空格。我不确定所有浏览器,所以我认为最安全的方法是使用RegExp检查可选的空格:

document.cookie.split(/;\s?/);

答案 1 :(得分:0)

你可以使用它..

document.cookie.split(";", -1)

调用String.split(String)返回String.split(String,0)并丢弃尾随的空字符串。 String.split(String,n),n&lt; 0不会丢弃任何东西。

为了进一步了解,您可以关注javadocs: - Split docs