XMLHttpRequest.send() не читает ответ при коде != 200

Рейтинг: 0Ответов: 1Опубликовано: 15.03.2023

Суть проблемы: XMLHttpRequest не хочет считывать код ошибки и JSON содержимое ответа сервера в случае ошибки (н.р. код 502).

Пример:

const formData = new FormData();
const QHttp = new XMLHttpRequest();
QHttp.open("POST", reqUrl, true);
QHttp.responseType = 'json';

QHttp.onerror = () => {console.log(QHttp.response, QHttp.status)}
QHttp.send(formData);

В консоль выводится: null 0, хотя тот же Postman получает все верно:

Status: 502 Bag Gateway Time: 65ms Size: 187 B
{
    "message": "too long request 277188118 > 209715200!"
} 

В чем может быть проблема?

Дополнено: Похоже, что проблема не в кодах ответа а в том, что XMLHttpRequest неверно отрабатывает, если сервер не принимает от него данные, а сразу возвращает ему код ошибки с сообщением.

Ответы

▲ 0
const formData = new FormData();
const QHttp = new XMLHttpRequest();
QHttp.open('POST', reqUrl, true);
QHttp.responseType = 'json';
QHttp.send(formData);

QHttp.addEventListener('load', () => {
  if (QHttp.status === 200) {
    //сделать что-то
  } else {
    console.log(QHttp.status);
  }
});