2013-01-15 182 views
0

我是jquery和JSON的新手,這就是我正在做的。 我有一個名字字段,姓氏字段和類「actionDueDate_input」的日期字段的列表。 我想生成一個JSON,它具有firstName,lastName並遍歷所有日期字段並將它們插入到JSON中。通過迭代準備JSON

我想要做到以下幾點,它給了我「未定義」。在這裏出現了一些基本的錯誤,我無法弄清楚。

var dateval=""; 
$('div.action input.actionDueDate_input').each(function(index) 
{ 
    if(index>0) 
    { 
     dateval+=","; 
    } 
    dateval+="{"; 
    dateval+='"'; 
    dateval+="actionDueDate"; 
    dateval+='"'+":"; 
    dateval+='"'+$(this).val()+'"'+"}"; 
}); 

alert(dateval); 

var values={"contact": 
[ 
    { 
     "givenName":givenName, 
     "familyName":familyName, 
     "actionSet": 
     [ 
      dateval 
     ], 
    } 
]}; 

alert('Action Dates for client one: '+values.contact[0].actionSet[0].actionDueDate); 
+0

不要手動構造的字符串。只需創建一個對象,然後使用'JSON.stringify()'。 – Blender

+1

json不是你想要自己生成的東西。你創建一個NATIVE數據結構(例如數組,對象..),然後通過json.stringify或任何json庫將它轉換爲json。 –

+0

如果它給你不確定的話,那麼問題肯定是$(this).val()(你沒有提供html)。我也建議使用JSON.stringify而不是手動構建JSON。 – Christophe

回答

0

JSON採取特殊格式化字符串的形式,而不是數組。數組就是你解析JSON時得到的。

要對數組進行JSON化,請使用JSON.stringify(arr)

這裏是採用一個原始形態的所有的值,並將它們捆綁成一個JSON字符串的示例:

var formInputs = {}, 
    jsonString; 

$('form').find('input', 'select').each(function(){ 
    formInputs[this.name] = this.value; 
}); 

jsonString = JSON.stringify(formInputs); 
+0

如果'this.name'不是數字,那麼這將不起作用。你必須使用一個對象:'formInputs = {}'。 –

+0

哎呀,意思是使用大括號,而不是方括號。謝謝。 – kinsho