2011-06-13 169 views
2

我有一個循環,在js中創建一個關聯數組,我需要將其轉換爲json。如何將這個多維關聯數組轉換爲json?

的Javascript:

var guest = {}; 
var guests = {}; 

for(var i=0;i<2;i++){ 
    var name = GetName(); 
    var email = GetEmail(); 
    guest = { 'Email': email, 'Name': name }; 
    guests.push(guest); 
} 

循環的結束都會給我,說:

{ 
{'Email':"[email protected]", 'Name':"Mr. Bob"}, 
{'Email':"[email protected]", 'Name':"Mr. Tom"} 
} 

我怎樣才能將它轉換爲JSON? (OK小jQuery插件)

我需要將這個JSON數組傳遞給我的MVC 3控制器:

[HttpPost] 
public ActionResult AddGuests(List<SelectedGuest> guests){ 

} 

public class SelectedGuest 
{ 
    public string Email { get; set; } 
    public string Name { get; set; } 
} 

感謝您的閱讀。

+0

JavaScript中沒有關聯數組這樣的事情。有對象,並且** JSON **是_JavaScript Object Notation_ [閱讀更多](http://www.json.org/)。 – Tadeck 2011-06-13 16:55:50

回答

3

你需要方括號之後。在JavaScript中真的有兩個產物:對象({})和對象([])和區別的陣列是非常重要的:

var guest = { }; 
var guests = [ ]; 

for(var i = 0; i < 2; i++) { 
    var name = GetName(); 
    var email = GetEmail(); 
    guest = { 'Email': email, 'Name': name }; 
    guests.push(guest); 
} 

現在我們已經固定您的JavaScript讓我們使用AJAX來此guests陣列發送到AddGuests控制器動作:

$.ajax({ 
    url: '/SomeController/AddGuests', 
    data: JSON.stringify(guests), 
    type: 'POST', 
    contentType: 'application/json', // <-- Make sure to set the proper content type 
    success: function(result) { 
     // TODO: handle the results of the controller action 
    } 
}); 

此處顯示的JSON.stringify方法在大多數現代瀏覽器中實現,但對於舊的瀏覽器你可能要包括following script

一個最後一句話:

決不硬編碼的URL在JavaScript這樣的:

使用URL打交道時,這樣
url: '/SomeController/AddGuests' 

始終在ASP.NET MVC中使用的網址助手:

url: '@Url.Action("AddGuests", "SomeController")' 
+0

Darrin,JSON.stringify來自jquery或插件?從來沒有使用過它...... – kheya 2011-06-13 16:57:07

+0

@Projapati,不,與jquery無關。正如我在我的回答中所說的那樣,它是現代瀏覽器中的內置JavaScript函數,並且包含我鏈接的腳本以便舊版瀏覽器也能正常工作是一種很好的做法。至於*較老的*瀏覽器而言,所有不是當前最新的版本都是舊的。例如:IE 8,FireFox 3.0,...因此,請確保只需在頁面中包含腳本:它是智能的,並且可以進行瀏覽器功能檢測,如果瀏覽器支持該功能,則只需使用本地方法。 – 2011-06-13 16:58:02

+0

url:'@ Url.Action(「AddGuests」,「SomeController」)'更安全還是更好?例如 – kheya 2011-06-13 17:01:34

1

您的通話循環,如果你想處理陣列JSON.stringify();

var json = JSON.stringify(guests); 
相關問題