我有一个新的Mvc Core应用程序。我使用jquery对控制器进行ajax调用。我试图在控制器异常的情况下返回错误消息。这是我的代码示例:
public async Task<IActionResult> UpdateAllocations([FromBody]AllocationsDto allocationsDto)
{
...
catch (Exception ex)
{
Response.StatusCode = (int)System.Net.HttpStatusCode.BadRequest;
return Json(new { success = false, responseText = ex.Message });
}
...
$.ajax({
type: "POST",
url: "/Allocation/UpdateAllocations",
data: JSON.stringify(allocationData),
contentType: "application/json; charset=utf-8",
dataType: "json"
})
.done(function (data) {
})
.fail(function (xhr, status, error) {
displayError("The ajax call to UpdateAllocations() action method failed:",
error, "Please see the system administrator.");
});
但是错误参数为空,状态只有一个单词“ error”以及xhr.statusText。如何返回自己的自定义文本,在这种情况下,例如ex.Message ??
答案 0 :(得分:1)
类型:函数(jqXHR jqXHR,字符串textStatus,字符串errorThrown) 如果请求失败,将调用的函数。该函数接收三个参数:jqXHR对象(在jQuery 1.4.x中为XMLHttpRequest),一个描述发生错误的类型的字符串,以及一个可选的异常对象(如果发生)。第二个参数(除null外)的可能值为“超时”,“错误”,“中止”和“ parsererror”。发生HTTP错误时,errorThrown会接收HTTP状态的文本部分,例如“未找到”或“内部服务器错误”。
您需要从第一个参数的responseJSON获取消息。
.fail(function (xhr, status, error) {
displayError("The ajax call to UpdateAllocations() action method failed:",
xhr.responseJSON.responseText, "Please see the system administrator.");
});