2014-03-12 50 views
0

我現在有一個JavaScript數組,看起來像下面這樣:一部分沒有被髮布到服務器

Array[ 
    0: "text1" 
    1: "text2" 
    2: "text3" 
    app_name: "text4" 
    ] 

奇怪的是數組只是說它包含3個項目時,我把它打印到控制檯。 Array[3]但顯然它有4個項目。

當我做這個數據的ajax後,app_name沒有被轉移到服務器。這是由於它是一個對象而不是數組?如果是的話,我將如何發佈到服務器。我不一定需要發佈的數字索引,只要關聯項目是最好的。

Ajax代碼:

$.ajax({ 
    url: path + "my/api/path", 
    data: {"data": myarray}, 
    dataType: 'json', 
    type: 'POST', 
    success: function(res) { 
     console.log(res); 
    } 
    }); 

編輯:我還應該提到我使用的jQuery的handsontable插件。這是我們的getData函數從spreadsheeet返回數據。

+1

嘗試使用對象而不是數組。 –

+1

這不是一個有效的JS數組:/ –

回答

3

雖然JavaScript中的數組對象,但並不意味着將指定的屬性指定給數組是明智的,就像您使用app_name所做的那樣。

數組長度將始終僅報告正確數字索引的元素(屬性)的數量,而不是其具有的任何命名屬性。

相同的問題適用於JSON序列化:JSON序列化程序不會序列化數組的命名屬性,因爲JSON沒有命名數組屬性的概念。爲了您的理智,我建議避免在數組中使用命名屬性(有時間和地點是有用的,但您必須真正知道您在做什麼)。爲了您的理智,我建議避免在數組上使用命名屬性。我可能會推薦重構你的代碼:

var thing = { 
    arr: [ 'text1', 'text2', 'text3' ], 
    app_name: 'text4' 
}  
+0

好解釋 –

0

使用JSON對象。

var obj = { 
    app_name: "text4", 
    items: ["text1", "text2", "text3"] 
}; 
0

數組數從0索引開始,所以數組[3]顯示正確。 並且要將app_data發佈到服務器,您必須將app_data分配給索引,然後嘗試,如下所示: 3:app_data 因爲數組定義只針對索引而不是字符串。

希望這有助於!

0

數組只考慮具有數字和正數索引的條目。

var arr = []; 
arr[20] = 'twenty'; 

你會看到arr.length將是21,而第20條將是undefined:如果你做的length屬性將等於最大索引+ 1。

我建議你爲你的目的使用一個對象。

相關問題