2014-03-04 79 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

相關問題