Jquery: получение ответа при возникновении ошибки HTTP 5XX или 4XX - PullRequest
0 голосов
/ 05 сентября 2018

В моем скрипте я обрабатываю ошибки 4XX или ошибки 5XX с помощью объекта statusCode, упомянутого в документации . Пример игрушечного вызова ajax, который я делаю:

$("someform").on("submit",function(e){
  e.preventDefault();

  var self=this; //To avoid Confusion using this
  var url=$(self).attr('action');

  $.ajax({
      'method': "POST",
      'url': url,
      'data': $(self).serialize(),
      'statusCode': {
        400: function(data,textStatus,jqXHR) {
          console.log(data.something);
        }
       }
  })
})

Мой код на стороне сервера возвращает следующий ответ:

{
  'something':"Hello, you did it wrong"
}

Но console.log отвечает

undentified

Как я могу получить правильное значение?

1 Ответ

0 голосов
/ 05 сентября 2018

При ошибке 400 ответ в data.responseJSON приводит к этому коду:

$("someform").on("submit",function(e){
  e.preventDefault();

  var self=this; //To avoid Confusion using this
  var url=$(self).attr('action');

  $.ajax({
      'method': "POST",
      'url': url,
      'data': $(self).serialize(),
      'statusCode': {
        400: function(data,textStatus,jqXHR) {
          data=data.responseJSON;
          console.log(data.something);
        }
       }
  })
})

Так что, как правило, когда вы обрабатываете ошибки 5xx или 4xx и ожидаете ответа json, просто установите данные со значением data.responseJSON, и все будет в порядке.

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