我的网页使用JQuery AJAX调用使用以下客户端代码从服务器(ASP.NET Core 2.0)中检索字符串值:
$.ajax({
method: "POST",
url: "/api/calculate",
contentType: 'application/json; charset=UTF-8',
Accept: "application/json; charset=UTF-8",
data: JSON.stringify(request),
dataType: "application/json",
success: function (data) {
console.log(data);
},
error: function (data) {
console.log(data);
}
Calculate方法返回一个简单的字符串:
// POST: api/Calculate
[HttpPost]
public JsonResult Post([FromBody]object jsonValue)
{
var publicId = "1234ABCDB";
var returnValue = Json(publicId);
return returnValue;
}
错误功能接收到的响应(在Chrome中),其中数据为:
{readyState:4,getResponseHeader:ƒ,getAllResponseHeaders:ƒ,setRequestHeader:ƒ,overrideMimeType:ƒ,…} 中止 : ƒ(e) 总是 : ƒ() 抓住 : ƒ(e) 完成 : ƒ() 失败 : ƒ() getAllResponseHeaders : ƒ() getResponseHeader : ƒ(e) overrideMimeType : ƒ(e) 管 : ƒ() 进展 : ƒ() 诺言 : ƒ(e) readyState : 4 responseText : “” 1234ABCDB“” setRequestHeader : ƒ(e,t) 州 : ƒ() 状态 : 200 statusCode : ƒ(e) statusText : “ parsererror” 然后 : ƒ(t,r,i) 原始 : 对象
我已经使用PostMan验证了响应文本是有效的JSON对象。我尝试返回其他具有相同(parseerror)结果的JsonResult。
更新: 采纳@ADyson的建议,我在Chrome调试器中检出了“网络”标签。我注意到响应包含来自Kestrel的415错误。搜索“茶est 415”将我带到this StackOverflow question。建议的答案之一是删除服务器的“发布”消息中的[fromBody]标记。那解决了问题!