Javascript object.value返回undefined

时间:2015-05-06 15:39:21

标签: javascript cookies

在我的一个javascripts中,我有一个包含当前保存的所有cookie的对象。该目的通过以下方式获得:

var cookies = document.cookie.split(";").
map(function(el){ return el.split("="); }).
reduce(function(prev,cur){ prev[cur[0]] = cur[1]; return prev },{});

之后我正在阅读cookie对象,如下所示:

console.log(cookies);
var json = cookies['tracks'];
console.log(json);

控制台输出看起来像普通的javascript对象:

Object { PHPSESSID: "e964d0b67bbabd149906473b6b2183d5",  
         tracks: "%7B%22test%22%3A%22tested%22%2C%2223%22%3A%22ert%22%7D" }
undefined

但是,变量JSON仍未定义,无论我使用的是cookies.tracks还是cookies["tracks"],还是使用了哪个浏览器,或者我是否尝试检查PHPSESSID cookie或{{1 }} 曲奇饼。知道为什么会这样吗?

我知道之前已经提出类似的问题,但是,没有一个答案适用于这个案例。

1 个答案:

答案 0 :(得分:3)

由于split(),您可能会在密钥中遇到额外空格问题。

当你分开";"时,你的键值将在它们前面有一个前置空间,这将在你的剩余处理过程中继续进行。如果你查看你的" cookies"的DOM版本Firebug中的对象,右键单击,tracks,点击"复制路径",然后粘贴结果,我愿意打赌你会看到:[" tracks"]

要解决此问题,您可以修剪逻辑中的某个空格,或使用cookies[" tracks"]引用该属性。