Как получить данные ответа JSON, когда ajax-запрос возвращает 4xx? - PullRequest
0 голосов
/ 15 октября 2018

У меня есть этот Ajax-запрос

    $.ajax({
        url: 'Default.aspx/CreateNewCase',
        data: JSON.stringify(
            {id: ID }
        ),
        dataType: "json",
        type: "POST",
        contentType: "application/json; charset=utf-8",
        success: function (data, status) {
            //when server returns 200
            loadCase(ID, data);
        },
        error: function (data) {
            //when server returns 4xx. For example 409
            if(data.status == "409")
            {
                var newData = data.responseJSON;
                //error newData is undefined
                loadCase(ID, newData);
            }
        }
    });
    }

Мой WebMethod всегда будет возвращать объект, независимо от того, равен результат 200 или 4xx.В ajax.success он возвращает данные объекта JSON.Однако на ajax.error я не могу получить data.responseJSON.

Я где-то читал, что JQuery запрещает чтение данных после ошибки.Я также пытался использовать .fail и .complete, но все еще не могу получить значение, когда запрос Ajax возвращает 4xx.

Как мне решить эту проблему?

1 Ответ

0 голосов
/ 16 октября 2018

Итак, я наконец нашел ответ.Я должен добавить этот параметр внутри <system.webServer> на web.config:

  <system.webServer>
    <httpErrors errorMode="DetailedLocalOnly" existingResponse="PassThrough" >
      <clear/>
    </httpErrors>
  </system.webServer>

Затем вы можете получить доступ к вашим данным, как это:

error: function (data, status) {
       if (data.status == "409") {
             var myData = data.responseJSON;

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