我有一个简单的ajax调用,它没有正确发送数据。我究竟做错了什么?这是AJAX:
$.ajax({
url: '/api/Chat/New',
type: 'POST',
dataType: 'json',
data: { id : 10}
});
这是我的控制器:
public class ChatController : BaseApiController
{
//
// GET: /Chat/
[HttpPost]
public int New(int id = -1)
{
return id;
}
}
BaseApiController
是我自己的控制器,其中包含DB上下文,它继承自ApiController。我根本无法通过网络发送数据。 New()每次只返回-1。
答案 0 :(得分:0)
试试这个
$.ajax({
url: '/api/Chat/New',
type: 'POST',
dataType: 'json',
data: JSON.stringify({ id : 10})
});
答案 1 :(得分:0)
尝试从ajax调用中删除数据类型。像这样的东西
$.ajax({
url: '@Url.Action("New", "Chat")',
type: 'post',
cache: false,
async: true,
data: { id: 10 },
success: function(result){
// do something if you want like alert('successful!');
}
});
答案 2 :(得分:0)
请查看以下帖子的答案 http://forums.asp.net/t/1939759.aspx?Simple+post+to+Web+Api
基本上,Web API Post只接受一个参数,它可以是基本类型或复杂对象。
将您的ajax请求更改为以下
$.ajax({
url: '/api/Chat/New',
type: 'POST',
data: { '' : 10}
});
然后按如下方式更改您的控制器
[HttpPost]
public int New([FromBody]int id = -1)
{
return id;
}
如果它是ViewModel
之类的复杂对象,则无需使用FromBody
您可以阅读以下文章中的“使用[FromBody]”部分,详细了解原因。
http://www.asp.net/web-api/overview/formats-and-model-binding/parameter-binding-in-aspnet-web-api