2013-02-28 128 views
0

我有以下:JavaScript的推JSON对象到阵列

var cookie = $.cookie("Test_cookie"); 
var items = cookie ? eval("([" + cookie + "])") : []; 
var jsonObj = { packageId: "11", machineId: "1", operationType: "Download" }; 
items.push(jsonObj); 
$.cookie(cookieName, JSON.stringify(items), { expires: 1, path: '/' }); 

结果:

[{"packageId":"11","machineId":"1","operationType":"Download"}] 

这是正确的。

然而,当我运行它的第二次我想新的对象添加到项目,但JSON得到弄糟(注意额外的 “[”):

var jsonObj = { packageId: "11", machineId: "1", operationType: "Download" }; 
items.push(jsonObj); 
$.cookie(cookieName, JSON.stringify(items), { expires: 1, path: '/' }); 

结果:

[[{"packageId":"11","machineId":"1","operationType":"Download"}],{"packageId":"11","machineId":"1","operationType":"Download"}] 

它应该是:

[{"packageId":"11","machineId":"1","operationType":"Download"},{"packageId":"11","machineId":"1","operationType":"Download"}] 

什么给?

+0

有些服务器将每月提醒您通过电子邮件 - 在您的网页可疑的脚本。感谢'eval()' – 2013-02-28 14:23:25

+0

尝试'console.log(items)'并在这里粘贴输出。 – ATOzTOA 2013-02-28 14:24:11

+1

@roXon - 他们应该每月收取您的费用,因为使用eval! – adeneo 2013-02-28 14:24:13

回答

3

你的错误是近

var items = cookie ? eval("([" + cookie + "])") : []; 

只是做

var items = cookie ? eval(cookie) : []; 
+0

做到了!谢谢!我会在9分钟内接受你的答案:) – ShaneKm 2013-02-28 14:24:54

+2

在这种情况下,如果与Cookie结合使用,eval是相当不需要的(和危险的寿命);) – 2013-02-28 14:25:25

+0

你是否是roXon? “cookie”只包含STRING ... – JoDev 2013-02-28 14:26:34