ajax 調用 .net core WebAPI,報錯 400 (Bad Request) Unexpected character encountered while parsing value

此文由博主前兩天的提問及 dudu 的回答整理,地址:https://q.cnblogs.com/list/myquestionjavascript

狀況說明

基於 .net core 寫了一個 Web API,用 postman 測試時,可以 POST 返回數據,可是用 ajax 調用 API 時就會報錯(400)。html

前端 ajax 調用報錯

postman 調用正常

服務端相關代碼

[HttpPost] public async Task<ActionResult<List<Flow>>> PostFlow([FromBody] PostParams data) // dynamic { return await _context.Set<Flow>().Where(s => data.Czid.Contains(s.Czid) && s.Rq >= data.Begin && s.Rq <= data.End).ToListAsync(); } public class PostParams { public DateTime Begin { get; set; } public DateTime End { get; set; } public int[] Czid { get; set; } }

前端ajax

$.ajax({
    type: "POST", url: "http://localhost/rfapi/api/flow", data: {"czid": ["1"], "begin": "2017-03-30 00:00:00", "end": "2017-03-31 00:00:00"}, contentType: "application/json", async: true, dataType: "json", success: function(data) { console.log(data.length); }, error: function(err) { console.log(err); } });

關於此 Web API 的搭建過程,可參考 .net core WebAPI 初探及鏈接MySQL前端

解決方法

要用 JSON.stringify 將 js 對象轉換爲 json 字符串java

data: JSON.stringify({"czid": ["1"], "begin": "2017-03-30 00:00:00", "end": "2017-03-31 00:00:00"})

感謝 dudu 的解惑。ajax

相關文章
相關標籤/搜索