2011-11-30 88 views
1

我正在用對象填充數組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

回答

9

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

0

可以作爲第二個參數提供的數據jquery.post()

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

的jQuery會爲你序列化它。

+1

你的意思是這樣的? '$。員額('AJAX/changenode。PHP」,nodevalues);' 結果: 表格數據: 未定義:未定義 未定義:未定義 未定義:未定義 未定義:未定義 未定義:未定義 未定義:未定義 未定義:未定義 未定義:未定義 未定義: undefined undefined:undefined 不做這項工作! – netiul

1

您可以使用JSON庫中的stringify函數。