【问题标题】:How can I return error message to Ajax call如何将错误消息返回给 Ajax 调用
【发布时间】:2019-06-11 19:29:50
【问题描述】:

我有一个新的 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参数是空的,status只有一个单词“error”以及xhr.statusText。如何返回我自己的自定义文本,在这种情况下为 ex.Message??

【问题讨论】:

  • @gaetanoM 谢谢你的建议。不幸的是,该解决方案不适用于 MVC Core,它返回 HttpStatusCodeResult。 MVC Core 使用 StatusCodeResult 代替,它的构造函数只接受一个参数,即状态码,并且没有错误消息...
  • 我使用了 return StatusCode(404, new { Message = ex.Message });结果相同...

标签: jquery ajax asp.net-core-mvc


【解决方案1】:

类型:函数(jqXHR jqXHR,字符串 textStatus,字符串 errorThrown ) 请求失败时调用的函数。该函数接收三个参数:jqXHR(在 jQuery 1.4.x 中,XMLHttpRequest)对象、描述发生的错误类型的字符串和可选的异常对象(如果发生)。第二个参数(除了 null)的可能值是“timeout”、“error”、“abort”和“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.");
});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2010-09-29
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-08-17
    相关资源
    最近更新 更多