2012-04-12 142 views
2

我有以下代碼不起作用。我試圖將文本「約翰」推到對象的末尾。我更熟悉PHP,並且這在PHP中起作用。如何將值分配給JSON對象

var data = {}; 
var field_name = "first_name"; 

data[field_name]['answers'][] = "John"; 

alert(data['first_name']['answers'][0]); 

編輯:

我也試過以下,並沒有奏效。

var data = {}; 
var field_name = "first_name"; 
var i=0; 

data[field_name]['answers'][i] = "John"; 

alert(data['first_name']['answers'][0]); 

回答

1

嘗試:

var data = {}; 
var field_name = "first_name"; 
data[field_name] = {}; 
data[field_name].answers = []; 
data[field_name].answers.push("John"); 

alert(data['first_name'].answers[0]); 
+0

那不是出於某種原因的工作。我完全按照寫法測試了您的代碼。 – Stephen305 2012-04-12 16:29:26

+0

添加另一條線請再試 – 2012-04-12 16:34:24

+0

答案需要在對象第一:http://jsfiddle.net/mplungjan/EVsM2/ 變種dataObj = { 「first_name的」:{ 「答案」:[ 「約翰」] } } – mplungjan 2012-04-12 16:36:06

0

人們不能任意地限定多個陣列維度或動態地擴展,如PHP邊界將愉快地允許。你需要做這樣的事情(簡寫[]符號也可以代替新的Array()我只是喜歡這種方式使用。):

var data = {}; 
var field_name = "first_name"; 

//Create the new dimensions 
data[field_name] = new Array(); 
data[field_name]['answers'] = new Array(); 
//Push the new element 
data[field_name]['answers'].push("John"); 

alert(data['first_name']['answers'][0]);​​​​​​​​​​​​​ 
+0

刪除var data = new Array()應該是var data = {}和data [field_name] = new Array(); 應該是data [field_name] = {}和 data [field_name] ['answers'] = new Array(); 應該是數據[field_name] ['answers'] = []; – mplungjan 2012-04-12 16:38:28