2011-11-29 66 views
1

當我嘗試傳球達陣數組服務器時,它使用AJAX的數據給出了(在服務器上的日誌)通行證陣列到服務器jQuery的阿賈克斯

1 => [object, object], 2=> [object, object] 

:數據上的console.log顯示

數據:

[Object {name="abc", place="us"}, Object {name="pqr", place="jp"}] 

實際陣列是如下:

data.push({name: "abc", place: "us"}) 
data.push({name: "pqr", place: "jp"}) 

我想輸出如(在服務器上):

Person1 = {name="abc", place="us"} 
Person2 = {name="pqr", place="jp"} 

我試圖jQuery.Serialize它不工作,並試圖將其轉換成JSON,但未能在客戶端(給輸出[])

我不知道,在哪裏。我錯了。我可以直接發送數據到服務器?

感謝 病毒

回答

2

JavaScript數組和對象是不一樣的東西。數組具有帶數字索引的元素,而對象具有帶字符串鍵名稱的屬性。

你可能想是這樣的:本身是對象的引用與「名」和「地方」特性

var data = { 
    Person1 : {name:"abc", place:"us"}, 
    Person2 : {name:"pqr", place:"jp"} 
}; 

這將創建一個對象(data),它具有屬性「PERSON1」和「PERSON2」 。

或者,陣推方法等同於你的屬性添加到對象是要做到這一點:

// create an empty object 
var data = {}; 

// set properties 
data["Person1"] = {name:"abc", place:"us"}; 
data["Person2"] = {name:"pqr", place:"jp"}; 

// or use dot notation: 
data.Person3 = {name:"xyz", place:"au"}; 
+0

感謝您的及時響應和很好的解釋:)。然而,我也嘗試過,但是當我將數組傳遞給服務器時,我得到了Person1 => [object,object] – Viral

+0

對不起....它給了Person1 => [object Object](不是逗號)。也在console.log我得到[Person1對象{name =「abc」,place =「我們」}]。 – Viral

+0

至少你得到的是「Person1」而不是「1」,所以這是朝正確方向邁出的一步。你能展示更多的代碼嗎?請顯示創建並填充對象/數組的代碼以及將它傳遞給服務器的ajax調用。你用jQuery標記了這個問題,那麼你是否使用'$ .ajax()'? jQuery可以將您的對象自動轉換爲JSON,作爲ajax調用的一部分。你如何解析它在服務器端? – nnnnnn

1

這裏是一個Ajax,如果你想嘗試一下,序列化和傳遞數據對象作爲JSON來服務器端。

var data = { 
    Person1 : { name:'abc', place:'us'}, 
    Person2 : { name:'pqr', place:'jp'} 
} 

$.ajax({ 
    type: 'POST', 
    url: 'url', 
    data: JSON.stringify(data), 
    contentType: 'application/json; charset=utf-8', 
    dataType: 'json', 
    success: function(msg) { 
    //success 
    } 
}); 
+0

確保您的服務器端對象的設置方式相同。不知道你在服務器端使用什麼,但如果你讓我知道我可以提供代碼。 – zero7

+0

謝謝zero7 ....我會試試這個。但是,JSON.stringify()需要一些json.js pulgin。我也嘗試過,但是放棄了,因爲firebug在json.js文件中檢測到太多錯誤。 – Viral

+0

嗯不知道json.js錯誤。另外,如果你不想要,你不需要使用stringify。你可以自己將你的JSON對象串聯起來。 – zero7