Javascript 获取 Cookie 对某些值不起作用

标签 javascript cookies

我的 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/

相关文章:

javascript - 为整个域而不是特定页面设置 cookie(使用 JS)

javascript - 如何将数字列表转换为唯一的两个对

javascript - 如何在angularjs中从数据库mysql加载动态记录?

javascript - 当Reducers更新状态时,路由重定向不会发生

javascript - 更改 :before selector from javascript

javascript - 如何在页面url更改时删除cookie,但在jquery刷新时不删除​​?

jquery - 计算按钮或链接的点击次数并存储在 cookie 中

php - 背景切换器?

google-chrome - 如何使用 webdriver 和 Chrome 在本地主机上可靠地设置 cookie?

javascript - 使用具有多个标记的 JavaScript 正则表达式分割字符串并考虑转义分隔符