如何在调用Web.api的JavaScript中序列化数组

时间:2014-06-10 13:53:17

标签: c# javascript jquery json asp.net-web-api

将数组发布到web.api(api控制器)并不是最简单的形式。

我有这个JavaScript

var ann = { Age: 11, Name: 'Ann' };
var bob = { Age: 22, Name: 'Bob' };
var list = [ann, bob];

$.ajax({
    url: '/api/myapi/',
    data:list,
    dataType: 'json',
    type: "POST",
});

然后我有一个带有简单邮政处理程序的web.api

public void Post(JObject pList)
{
    //Whatever
}

如果我更改"数据:列表"与"数据:ann"然后一切都按预期工作(除了bob当然不会过来)。但是,当我列出一个列表然后它就不起作用。

我试图查找解决方案,有些似乎是在JavaScript中手动序列化,这是正确的"解决方案" /"最佳实践"对于这个问题,或者有更简单的方法吗?

2 个答案:

答案 0 :(得分:1)

只需将您的ajax请求更改为:

$.ajax({
    url: '/api/myapi/',
    data:list,
    traditional: true,
    dataType: 'json',
    type: "POST",
});

如果您想了解更多信息,请阅读此内容:http://api.jquery.com/jQuery.param/

答案 1 :(得分:1)

我认为这可能适合你

$.ajax({
    url: '/api/myapi/',
    data: JSON.stringify(list),
    contentType: 'application/json',
    type: "POST",
});

和你的控制器

public void Post(List<yourobject> list)
{
    //Whatever
}