序列化对象数组

问题描述:

我正在用对象填充数组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

永远不要做$(this).attr('id')'。 “this”是.each()是DOM元素 - >'this.id' –

+0

@Didier G我不知道我理解你的评论。 $(this)在jquery中是javascript中的[0]。你应该总是在jQuery中使用$(this).attr('id')。 –

+0

@DidierG。我想你错过了我的帖子。我的问题是如何序列化一个对象数组。你提到的代码就像它应该那样工作。 – netiul

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

var dataString = jQuery.param(nodevalues); 

什么似乎帕拉姆仅适用于对象,而不是数组。

如果你换你的数组中的一个对象,它工作正常:

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/

+0

好吧,它不!我用我试过的东西编辑了我的问题。 – netiul

+0

@ZacL我已经更新了我的答案 –

+0

完美!你让我今天很开心! – netiul

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

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

的jQuery会为你序列化它。

+1

你的意思是这样的? '$。员额('AJAX/changenode。PHP”,nodevalues);' 结果: 表格数据: 未定义:未定义 未定义:未定义 未定义:未定义 未定义:未定义 未定义:未定义 未定义:未定义 未定义:未定义 未定义:未定义 未定义: undefined undefined:undefined 不做这项工作! – netiul

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