2015-08-25 90 views
1

我無法將JSON對象發送到我的MVC 6 WebApi控制器。使用jQuery將JSON對象發送到MVC 6使用jQuery的WebApi控制器

當我看到在提琴手的RAW數據,正是我目前正在發送,是這樣的:

Username=brugernavn&Password=adgangskode&DocumentId=document.dotx 

我認爲我的控制器期待收到,是這樣的:

{"Username":"brugernavn","Password":"adgangskode","DocumentId":"document.dotx"} 

我的控制器代碼:

namespace DemoApp.Controllers 
{ 
    [Route("api/[controller]")] 
    public class DocumentController : Controller 
    { 

     // POST: api/documentcontroller/GetDocumentInformation 
     [HttpPost] 
     [Route("[action]")] 
     public string GetDocumentInformation([FromBody] GetDocumentInformationRequest documentInformationRequest) 
     if (documentInformationRequest == null) 
     { 
      return "null"; 
     } else { 
      return "ok"; 
     } 
    } 
} 

我GetDocumentInformationRequest模型類:

public class GetDocumentInformationRequest 
{ 
    public string Username { get; set; } 
    public string Password { get; set; } 
    public string DocumentId { get; set; } 
} 

我jQuery代碼:

var source = { 
    'Username': 'brugernavn', 
    'Password': 'adgangskode', 
    'DocumentId': documentID 
} 
var apiUrl = location.origin + "/api/documentcontroller/GetDocumentInformation"; 
$.ajax({ 
    type: "POST", 
    dataType: "json", 
    url: apiUrl, 
    data: source, 
    success: function (data) { 
     alert(data); 
    }, 
    error: function (error) { 
     var x = error; //break here for debugging. 
    } 
}); 

AJAX請求並擊中控制器,但documentInformationRequest參數爲空。

此外,ajax請求每次都會在錯誤塊中結束,但那是因爲控制器當前僅返回「null」,這是無效的JSON ... (它返回代碼200,並且沒有錯誤拋出。)

我已經嘗試了許多變種的ajax請求,但到目前爲止沒有導致正確地將JSON對象發送到控制器。

回答

1

感謝。 同時,我偶然發現了一個類似的解決方案,但我還需要在控制器接受數據之前添加contentType參數。

所以在我的情況下,完整的答案如下:

$.ajax({ 
    type: "POST", 
    dataType: "json", 
    url: apiUrl, 
    data: JSON.stringify(source), 
    contentType: "application/json", 
    success: function (data) { 
     alert(data); 
    }, 
    error: function (error) { 
     var x = error; //break here for debugging. 
    } 
}); 
1

你只需要使用JSON.stringify的答案維塔利

$.ajax({ 
    type: "POST", 
    dataType: "json", 
    url: apiUrl, 
    data: JSON.stringify(source), 
    success: function (data) { 
     alert(data); 
    }, 
    error: function (error) { 
     var x = error; //break here for debugging. 
    } 
}); 
相關問題