我使用Newcookie()创建了一个cookie,我可以通过浏览器访问它,如下所示。现在我需要阅读cookie
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。请就此向我提出建议。 感谢
答案 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