jQuery асинхронный / ожидающий Ajax вызов, без вызова исключения по HTTP <> 200? - PullRequest
0 голосов
/ 27 апреля 2020

Я пытаюсь создать асинхронный / ожидающий HTTP POST, используя jQuery, например:

    let response = await $.post({
        url: 'https://example.com/product/add',
        data: JSON.stringify({"foo":"bar"}),
        contentType: 'application/json; charset=UTF-8'
    });

Затем я хотел бы проверить код ответа и определить, какое действие предпринять на его основе:

if( response.status === 200 ) {
    // Ok
}
else{
    // Something went wrong, inspect the response body for details
}

Но, похоже, $.post() выдает исключение, если код состояния ответа <> 200, что означает, что мне нужно было бы обернуть все это в блок try...catch и выполнить обработку ошибок вместо этого в блоке catch.

Меня раздражает необходимость иметь дело с исключениями для таких вещей, как HTTP 500, "Поле 'foo' должно содержать не менее 4 символов" .

Есть ли способ заставить $.post() не создавать исключение для кодов состояния, отличных от 200?

1 Ответ

0 голосов
/ 27 апреля 2020

использовать $.post().always() функцию.

Описание : Добавить обработчики, которые будут вызываться при разрешении или отклонении отложенного объекта.

(https://api.jquery.com/deferred.always/)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...