jQuery数组到cookie中

var adddata = []; adddata[ group ] = []; adddata[ group ][ id ] = option; // option is an object like { foo : 'bar' } console.log( adddata ); // looks ok $.cookie( 'cookiename', JSON.stringify( adddata ) ); console.log( $.cookie( 'cookiename' ) ); // just "[]" $.cookie( 'cookiename', adddata ); console.log( $.cookie( 'cookiename' ) ); // "an empty string" // in another file var cdata = JSON.parse( $.cookie( 'cookiename' ) ); $.each( cdata, function( group, items ){ /* and so on */ }); 

如您所见,我使用$ .cookie插件。 但是如何以正确的方式将数组存储到cookie中呢?

谢谢和问候,亚历克斯

如果groupid不是数值,则JSON.stringify将忽略它们。 将数组转换为JSON时,只考虑数字属性。

看到:

 > a = [] [] > a['foo'] = 5 5 > a[0] = 42 42 > JSON.stringify(a) "[42]" 

如果处理非数字属性,则必须使用对象 {}

 > a = {} Object > a['foo'] = 5 5 > JSON.stringify(a) "{"foo":5}" 

切勿将JavaScript 数组用作关联数组。 JS数组应该只有数字键。 对于其他一切,使用普通对象。

存储前需要序列化,因为cookie只能是一个字符串。 但是,有可用的JS / jQ cookie库试图透明地为您处理un /序列化。 人们使用jQuery(你正在使用的)最流行的cookie库不会尝试为你处理这个,所以你需要额外的步骤。

编辑:啊,我错过了关于序列化的部分问题没有得到正确的值。 看到Felix Kling的回答,这是对的。