AJAX - ответ сервера
Свойство onreadystatechange
Свойство ReadyState имеет статус XMLHttpRequest.
Свойство onreadystatechange определяет функцию, выполняемую при изменении readyState.
Свойство Status и свойство StatusText содержит состояние объекта XMLHttpRequest.
Свойство | Описание |
---|---|
onreadystatechange | Определяет функцию, вызываемую при изменении свойства readyState |
readyState | Содержит статус XMLHttpRequest. 0: запрос не инициализирован 1: установленное соединение сервера 2: запрос получен 3: обработка запроса 4: запрос готов и ответ готов |
status | 200: "OK" 403: "запрещено" 404: "страница не найдена" Для полного списка перейдите на Ссылка на HTTP-сообщения |
statusText | Возвращает текст состояния (например, "OK" или "не найден") |
Функция onreadystatechange вызывается каждый раз при изменении readyState.
Когда readyState 4 и статус 200, ответ готов:
Пример
function loadDoc() {
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
document.getElementById("demo").innerHTML =
this.responseText;
}
};
xhttp.open("GET", "ajax_info.txt", true);
xhttp.send();
}
Событие onreadystatechange запускается четыре раза (1-4), один раз для каждого изменения в readyState.
Использование функции обратного вызова
Функция обратного вызова — это функция, переданная в качестве параметра другой функции.
Если на веб-сайте имеется более одной задачи Ajax, необходимо создать одну функцию для выполнения объекта XMLHttpRequest и одну функцию обратного вызова для каждой задачи Ajax.
Вызов функции должен содержать URL-адрес и функцию, которую необходимо вызвать при готовности ответа.
Пример
loadDoc("url-1", myFunction1);
loadDoc("url-2", myFunction2);
function loadDoc(url, cFunction) {
var xhttp;
xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
cFunction(this);
}
};
xhttp.open("GET", url, true);
xhttp.send();
}
function myFunction1(xhttp) {
// action goes here
}
function myFunction2(xhttp) {
// action goes here
}
Свойства ответа сервера
Свойство | Описание |
---|---|
responseText | получение данных ответа в виде строки |
responseXML | получение данных ответа в виде XML-данных |
Методы ответа сервера
Метод | Описание |
---|---|
getResponseHeader() | Возвращает сведения о конкретном заголовке из ресурса сервера |
getAllResponseHeaders() | Возвращает все сведения о заголовке из ресурса сервера |
Свойство responseText
Свойство responseText возвращает ответ сервера в виде строки JavaScript, и его можно использовать соответствующим образом:
Пример
document.getElementById("demo").innerHTML = xhttp.responseText;
Свойство responseXML
Объект XML HttpRequest имеет встроенный синтаксический анализатор XML.
Свойство responseXML возвращает ответ сервера как объект XML DOM.
С помощью этого свойства можно анализировать ответ как объект XML DOM:
Пример
Запросить файл cd_catalog.xml и анализировать ответ:
xmlDoc = xhttp.responseXML;
txt = "";
x = xmlDoc.getElementsByTagName("ARTIST");
for (i = 0; i <x.length; i++) {
txt += x[i].childNodes[0].nodeValue + "<br>";
}
document.getElementById("demo").innerHTML = txt;
xhttp.open("GET",
"cd_catalog.xml", true);
xhttp.send();
Вы узнаете намного больше о XML DOM в главах DOM этого учебного пособия.
Метод getAllResponseHeaders ()
Метод getAllResponseHeaders () возвращает все сведения о заголовке из ответа сервера.
Пример
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
document.getElementById("demo").innerHTML =
this.getAllResponseHeaders();
}
};
Метод getResponseHeader ()
Метод getResponseHeader () возвращает определенные сведения заголовка из ответа сервера.
Пример
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
document.getElementById("demo").innerHTML =
this.getResponseHeader("Last-Modified");
}
};
xhttp.open("GET", "ajax_info.txt", true);
xhttp.send();