2009-09-24 33 views
1

的Javascript连载阵列这是庄严讨厌我的那一刻:呐喊 - 以不同的方式

考虑2个值的数组:

var myArray = new Array(); 
myArray.push(21031); 
myArray.push(21486); 

当使用jQuery在cookie存储这一点,的toJSON,cookie的值是这样的:

["21031","21486"] 

现在考虑单个值的数组:

var myArray = new Array(); 
myArray.push(21239); 

当使用jQuery和的toJSON一个cookie存储这一点,cookie的值是这样的:

21239 

这几乎是完全没用的,我的,当我拉项目从cookie,一个回来作为一个单一的价值,另一个回来作为一个数组,我可以迭代....啊!

为什么?

+0

你从哪里得到'toJSON'? – 2009-09-24 15:13:13

+0

我检出了http://jollytoad.googlepages.com/json.js,它似乎按预期工作,即使对于单元素数组也是如此。你能详细解释一下cookie部分吗? – artagnon 2009-09-24 15:35:57

回答

3

我建议使用json2.js' JSON.stringify。它得到这两方面的情况下,右:

// [] is the same as new Array(); 
var foo = []; 

foo.push(1); 
foo.push(2); 

JSON.stringify(foo); // "[1, 2]" 

var bar = []; 

bar.push(1); 

JSON.stringify(bar); // "[1]" 

此外,当您使用json2.js API,你的代码会自动发生在新的浏览器利用浏览器的原生功能。

0

饼干是字符串,所以你所做的只是存储数组的字符串序列化。如果我:

document.cookie = [1, 2].toString() 

然后document.cookie中具有值“1,2”,这是不是一个数组。

编辑:至于JSON不是原生的jQuery方法,它可能来自插件。你检查过插件文档吗?另外,尝试一个不同的插件,如你所期望的那样工作。

1

你做错了什么。不管你使用什么JSON LIB(假设它的实际工作),这个序列化的:

[21031, 21486] 

应该产生这样的:

"[21031,21486]" 

["21031","21486"]为您发布。这看起来像是在序列化单个元素。发布更多代码。