Как я могу вернуть сообщение об ошибке для вызова Ajax - PullRequest
0 голосов
/ 11 июня 2019

У меня новое приложение 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.");
        });

Но параметр ошибки пуст, и в статусе есть только одно слово «ошибка», а также xhr.statusText. Как я могу вернуть свой собственный текст, в данном случае ex.Message ??

1 Ответ

1 голос
/ 12 июня 2019

Тип: Функция (jqXHR jqXHR, String textStatus, String errorThrown) Функция, вызываемая в случае сбоя запроса.Функция получает три аргумента: объект jqXHR (в jQuery 1.4.x, XMLHttpRequest), строка, описывающая тип возникшей ошибки и необязательный объект исключения, если таковой произошел.Возможные значения для второго аргумента (кроме нуля): «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.");
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...