2014-03-04 58 views
0

我有一个简单的ajax调用不能正确发送数据。我究竟做错了什么?这里是AJAX:.NET MVC 4 API控制器没有获取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

尝试取出dataType:'json'行。你没有在你的控制器中收到一个对象,只是一个原始类型。 – aw04

+0

我试过了,没有任何改变 –

+0

你说它确实打了控制器,只是没有数据?在这种情况下,我发布了一个适用于我的替代方案 – aw04

回答

0

试试这个

$.ajax({ 
     url: '/api/Chat/New', 
     type: 'POST', 
     dataType: 'json', 
     data: JSON.stringify({ id : 10}) 
    }); 
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!'); 
    } 
}); 
0

请看看下面的帖子 http://forums.asp.net/t/1939759.aspx?Simple+post+to+Web+Api

基本的答案,网页API后只接受一个参数,它可以是一个基本类型或一个复杂的对象。

更改您的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

相关问题