2014-03-05 85 views
3

我有一個包含3個元素AngularJS轉換陣列到JSON

var a = []; 
    a["username"]=$scope.username; 
    a["phoneNo"]=$scope.phoneNo; 
    a["altPhoneNo"]=$scope.altPhoneNo; 

陣列現在,我想在JSON格式這個數據發送到服務器。因此,我用

var aa = JSON.stringify(a); 
    console.log("aa = "+aa); 

但控制檯顯示空數組

aa = [] 

我如何轉換這個數組JSON?

+2

雖然控制檯顯示[]'了'確實包含的所有項目。只需將'var a = [];'更改爲'var a = {};' – AlwaysALearner

+1

JSON數組不支持命名鍵;只是編號索引。所以,它們不能包含在字符串中。但是,您可以使用帶'Object's - 'var a = {};'的命名鍵。 –

回答

9

這不是將元素添加到數組的正確方法,而是添加屬性。 如果您確實console.log(a.username);您會看到您的$scope.username值。

你既可以做

var a = []; 
a.push({"username": $scope.username}); 
a.push({"phoneNo": $scope.phoneNo}); 
a.push({"altPhoneNo": $scope.altPhoneNo}); 

但它看起來更像你想要做的是

var a = {}; 
a["username"] = $scope.username; 
a["phoneNo"] = $scope.phoneNo; 
a["altPhoneNo"] = $scope.altPhoneNo; 

也就是說,你希望你的a到,如果你是一個對象將添加屬性。 這將是更好的寫法如下

var a = {}; 
a.username = $scope.username; 
a.phoneNo = $scope.phoneNo; 
a.altPhoneNo = $scope.altPhoneNo;