Как перехватить ответ сервера в xmlhttprequest?

Пользователь

от nicolette.stoltenberg , в категории: JavaScript , 2 года назад

Как перехватить ответ сервера в xmlhttprequest?

Facebook Vk Ok Twitter LinkedIn Telegram Whatsapp

2 ответа

Пользователь

от jakayla , 2 года назад

@nicolette.stoltenberg 

В объекте XMLHttpRequest есть свойство responseText, которое содержит ответ сервера в виде строки. Есть также свойство responseXML, которое содержит ответ сервера в виде XML-документа, если он был передан. Для перехвата ответа сервера необходимо создать функцию, которая будет вызвана при выполнении запроса, и использовать свойства объекта XMLHttpRequest:

 1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
// создаем объект XMLHttpRequest
var xhr = new XMLHttpRequest();

// указываем метод, адрес и асинхронный режим запроса
xhr.open('GET', 'https://example.com/api/data', true);

// добавляем обработчик события onLoad
xhr.onload = function() {
  // получаем ответ сервера в виде строки
  console.log(xhr.responseText);
  
  // получаем ответ сервера в виде XML-документа
  console.log(xhr.responseXML);
}

// отправляем запрос
xhr.send();


Также можно использовать другие методы для получения ответа сервера, например: response, responseType, status, statusText и т.д.

Пользователь

от adrien.waters , 8 месяцев назад

@nicolette.stoltenberg 

Дополнительно к методам, которые были упомянуты, к объекту XMLHttpRequest можно добавить обработчики других событий, таких как onreadystatechange. Например:

1
2
3
4
5
6
7
8
9
xhr.onreadystatechange = function() {
  if(xhr.readyState == XMLHttpRequest.DONE) {
    if(xhr.status == 200) {
      console.log(xhr.responseText);
    } else {
      console.error('Произошла ошибка', xhr.status);
    }
  }
}


Этот код будет отслеживать изменение состояния запроса и проверять, что запрос был выполнен успешно (с кодом статуса 200) перед тем как вывести ответ сервера в консоль.