1

我的 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'));:undefined。

任何人都可以帮助我吗?

我要做的是让浏览器在每次重新加载页面时记住复选框的值。

4

1 回答 1

0

只是为了完整起见,这里有一个完整的答案,而不仅仅是评论中的提示:

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

请记住,那些是readOnly。为了修改它们,您必须将对象写回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('; ')
于 2012-05-19T12:01:06.253 回答