我正在通过ajax请求调用.net核心操作。它甚至没有在等待return语句,但是,一旦我调用Auth0管理api,它就会返回错误。
[HttpPost]
public async Task<IActionResult> Create([FromBody]ConnectionCreateRequest model)
{
try
{
var result = await _managementApiClient.Connections.CreateAsync(model);
return Ok();
}
catch (Exception ex)
{
return Content(ex.Message);
}
}
结果语句后返回错误。
这是ajax调用:
$.ajax({
type: "POST",
url: '@Url.Action("Create", "Connection")',
contentType: "application/json charset=utf-8",
data: JSON.stringify(model),
success: function (result) {
alert('Connections has been created successfully');
},
error: function (result, err) {
alert(err);
},
complete: function () {
hideLoadingGif();
}
});
});
我在做什么错了?
答案 0 :(得分:0)
问题是您的控制器正在返回内容,这是IAction结果中200状态代码结果的例外。
您的控制器正在正确捕获异常,但由于Content return语句而仍返回200。
答案 1 :(得分:0)
问题是在 $.ajax 方法中您没有指定 dataType 属性。在这种情况下,$.ajax 根据响应内容类型进行“智能猜测”:
<块引用>dataType (默认: Intelligent Guess (xml, json, script, or html)) 您期望从服务器返回的数据类型。如果没有指定,jQuery 将尝试根据响应的 MIME 类型推断它。
.net core 中的Ok()
方法返回空响应,响应头中没有指定 MIME 类型。这就是 $.ajax 使用 statusText "parseerror"
触发错误回调的原因。
解决办法是:
"text"
,$ajax 将接受空响应并触发成功回调Json(true)
或Json(null)
为成功响应,$.ajax会自动识别为json响应并触发成功回调。$.ajax dataType option 的 json 响应文档:
<块引用>从 jQuery 1.9 开始,如果 dataType 为空响应也会被拒绝 json;服务器应改为返回 null 或 {} 响应。 (看 有关正确 JSON 格式的更多信息,请访问 json.org。