序列化对象数组

时间:2011-11-30 11:11:31

标签: javascript jquery

我正在用对象填充数组nodevalues。它看起来像这样:

nodevalues.push({id: this.id, left: left, right: right});

此行位于$.each()迭代器内,迭代一些li个节点,并计算leftright值。

所以我有一个包含几个看起来相同的对象的数组:screen dump chrome console

是否可以使用jQuery.post()将此数组序列化为用于数据库存储的url字符串?

调用$(nodevalues).serialize()不返回任何内容,$.param(nodevalues)返回undefined=undefined&undefined=undefined&undefined=undefined&undefined=undefined&undefined=undefined&undefined=undefined&undefined=undefined&undefined=undefined&undefined=undefined&undefined=undefined ...

3 个答案:

答案 0 :(得分:11)

jQuery.param()可能会做你想要的事情

var dataString = jQuery.param(nodevalues);

似乎param只适用于对象,而不适用于数组。

如果将数组包装在一个对象中,它可以正常工作:

var nodevalues = [];

nodevalues.push({id: "node1", left: 1, right: 20});
nodevalues.push({id: "node2", left: 2, right: 10});
nodevalues.push({id: "node3", left: 3, right: 30});
nodevalues.push({id: "node4", left: 4, right: 40});

var data = { data: nodevalues };

alert($.param(data));

http://jsfiddle.net/4NELt/

答案 1 :(得分:1)

您可以使用JSON库中的stringify函数。

答案 2 :(得分:0)

您可以将数据作为第二个参数提供给jquery.post()

jQuery.post( url [, data] [, success(data, textStatus, jqXHR)] [, dataType] );

jquery将为您序列化它。