我的 PHP 中有这个函数:
setcookie("UserPusser", $user, time() + 604800, "/pusser/beta/");
setcookie("PassPusser", $pass, time() + 604800, "/pusser/beta/");
setcookie("NotifPusser", $notif, time() + 604800, "/pusser/beta/");
我的 javascript 中有这个函数
function getThisCookie(name){
var value;
var singleCookie = document.cookie.split(";")
for(var x in singleCookie){
var y = singleCookie[x].split("=");
if(y[0] == name) {
value = y[1];
}
}
return value;
}
当我输入 alert(getThisCookie('UserPusser'))
时,结果就是我想要的。但是当我尝试编写 alert(getThisCookie('NotifPusser'));
或 alert(getThisCookie('PassPusser'));
结果是:未定义。
有人可以帮助我吗?
我想做的是让浏览器在每次重新加载页面时记住复选框的值。
最佳答案
为了完整起见,这里提供完整的答案,而不仅仅是评论中的提示:
Cookie 值由 ;
(分号 + 空格)分隔
这会给你留下这样的结果:
cookie = 'a=123; b=456; c=678'
为了分隔它们,您必须使用相同的分隔符来分隔它们。 使用现代浏览器(我猜是 JS 1.6+,现在还不太确定)或像 underscore.js 这样的库,你也可以将它们放入一个对象中。
// if your browser supports 'reduce'
var cookieObject = document.cookie.split('; ').reduce(function(o, kvp) {
var split_kvp = kvp.split('=');
o[split_kvp[0]] = split_kvp[1];
return o;
}, {});
// underscore.js version
var cookieObject = _.reduce(document.cookie.split('; '), function(o, kvp) {
var split_kvp = kvp.split('=');
o[split_kvp[0]] = split_kvp[1];
return o;
}, {});
无论如何,执行任何这些操作后,您都可以轻松访问您正在寻找的值:
cookieObject.a == 123
cookieObject.b == 456
请记住这些是只读。为了修改它们,您必须将对象写回 document.cookie
// again, modern browser version
document.cookie = Object.keys(cookieObject).map(function(key) {
return key + '=' + cookieObject[key];
}).join('; ');
// with underscore.js
document.cookie = _.chain(cookieObject).keys().map(function(key) {
return key + '=' + cookieObject[key];
}).value().join('; ')
关于Javascript 获取 Cookie 对某些值不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10664603/