English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

AJAX - обработка ответа сервером

Объект XMLHttpRequest позволяет вам определить функцию для обработки ответа.

Функция ответа onreadystatechange определена в атрибутах объекта XMLHttpRequest.

httpRequest.onreadystatechange = function() {
  if (this.readyState === 4 && this.status === 200) {
 document.getElementById("output").innerHTML = this.responseText;
  }
};
Проверьте, посмотрите‹/›

Атрибут onreadystatechange определяет функцию, которая будет выполняться при изменении readyState.

Атрибут readyState сохраняет состояние объекта XMLHttpRequest.

Атрибут status сохраняет состояние кода объекта XMLHttpRequest.

Атрибут statusText сохраняет текст состояния объекта XMLHttpRequest.

АтрибутОписание
onreadystatechangeОпределяет функцию, которая вызывается при изменении свойства readyState
readyStateУдерживать состояние XMLHttpRequest:
0: Запрос не инициализирован
1: Установлено соединение с сервером
2: Получен запрос
3: Обработка запроса
4: Запрос завершен и ответ готов
statusВозвращает номер состояния запроса:
200: "OK"
403: "Forbidden"
404: "Not Found"
Для получения полного списка, пожалуйста, посетитеСправочник по HTTP-��态 кодам
statusTextВозвращает текст состояния запроса (например, "OK" или "Not Found")

Атрибуты ответа сервера

В таблице ниже перечислены атрибуты ответа сервера:

АтрибутОписание
responseTextВозвращает данные ответа в виде строки
responseXMLВозвращает данные ответа в виде XML

Атрибут responseText

Атрибут responseText возвращает ответ сервера в виде строки JavaScript.

document.getElementById("output").innerHTML = httpRequest.responseText;
Проверьте, посмотрите‹/›

Атрибут responseXML

Атрибут responseXML возвращает ответ сервера в виде объекта XMLDocument.

Вы можете использовать функции DOM JavaScript для遍ения объекта XMLDocument.

Ниже приведен пример файла запросаajax_test.xmlи анализировать ответ:

xmlDoc = httpRequest.responseXML;
tag = xmlDoc.getElementsByTagName("author");
for (let i = 0; i < tag.length; i++) {
    txt += tag[i].childNodes[0].nodeValue + "<br>";
}
httpRequest.open("GET", "ajax_test.xml", true);
httpRequest.send();
Проверьте, посмотрите‹/›

Методы ответа сервера

В таблице ниже перечислены методы ответа сервера:

МетодОписание
getAllResponseHeaders()возвращает информацию заголовка
getResponseHeader()возвращает специфическую информацию заголовков

Метод getAllResponseHeaders()

Метод getAllResponseHeaders() возвращает все заголовки информации из ответа сервера.

var httpRequest = new XMLHttpRequest();
httpRequest.onreadystatechange = function() {
  if (this.readyState === 4 && this.status === 200) {
     document.getElementById("output").innerHTML = this.getAllResponseHeaders();
  }
};
Проверьте, посмотрите‹/›

Метод getResponseHeader()

Метод getResponseHeader() возвращает определенную информацию заголовка из ответа сервера.

var httpRequest = new XMLHttpRequest();
httpRequest.onreadystatechange = function() {
  if (this.readyState === 4 && this.status === 200) {
     document.getElementById("output").innerHTML = this.getResponseHeader("Server");
  }
};
Проверьте, посмотрите‹/›

Множественные задачи AJAX

Если на сайте есть несколько задач AJAX, то следует создать две функции:

  • Функция для выполнения объекта XMLHttpRequest

  • У каждой задачи AJAX есть обратная функция

Вызов функции должен содержать URL и функцию, которая будет вызываться после готовности ответа.

fetchDoc("url-1", myFunc1);
fetchDoc("url-2", myFunc2);
fetchDoc("url-3", myFunc3);
function fetchDoc(url, callback) {
  var httpRequest = new XMLHttpRequest();
  httpRequest.onreadystatechange = function() {
   if (this.readyState === 4 && this.status === 200) {
        callback(this);
    }
  };
  httpRequest.open("GET", url, true);
  httpRequest.send();
}
function myFunc1(httpRequest) {
  // действие происходит здесь
}
function myFunc2(httpRequest) {
  // действие происходит здесь
}
function myFunc3(httpRequest) {
  // действие происходит здесь
}
Проверьте, посмотрите‹/›

Обратная функция вызывается в качестве параметра переданной другой функции.