.NET MVC 4 API控制器无法获取AJAX数据?

时间:2014-03-04 02:06:58

标签: ajax asp.net-mvc-4

我有一个简单的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。

3 个答案:

答案 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