我有一个循环,在js中创建一个我需要转换为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':"bob@zyz.com", 'Name':"Mr. Bob"},
{'Email':"tom@zyz.com", 'Name':"Mr. Tom"}
}
如何将此转换为JSON? (可以使用小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 :(得分: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。
最后一句话:
永远不要在这样的javascript中对网址进行硬编码:
url: '/SomeController/AddGuests'
在处理网址时,始终在ASP.NET MVC中使用Url帮助程序,如下所示:
url: '@Url.Action("AddGuests", "SomeController")'
答案 1 :(得分:1)
for for call call JSON.stringify();
var json = JSON.stringify(guests);