Учебник по XML

XML ГЛАВНАЯ Введение в XML XML Как использовать XML-дерево Синтаксис XML XML-элементы XML-атрибуты Пространства имен XML Отображение XML XML HttpRequest XML-парсер XML DOM XML XPath XML XSLT XML XQuery XML-ссылка XML-валидатор XML-DTD XML-схема XML-сервер XML-примеры XML-викторина XML-сертификат

XML АЯКС

Введение в АЯКС AJAX XMLHttp АЯКС-запрос AJAX-ответ XML-файл AJAX АЯКС PHP АЯКС АСП База данных AJAX AJAX-приложения Примеры AJAX

XML DOM

Введение в ДОМ DOM-узлы Доступ к DOM Информация об узле DOM Список узлов DOM Обход DOM DOM-навигация DOM Получить значения Узлы изменения DOM DOM Удалить узлы DOM заменить узлы DOM Создание узлов DOM Добавить узлы Узлы клонирования DOM Примеры DOM

Учебник XPath

XPath Введение Узлы XPath Синтаксис XPath Оси XPath Операторы XPath Примеры XPath

XSLT- учебник

Введение в XSLT Языки XSL XSLT-преобразование XSLT <шаблон> XSLT <значение> XSLT <для каждого> XSLT <сортировка> XSLT <если> XSLT <выбрать> XSLT Применить XSLT на клиенте XSLT на сервере XSLT Редактировать XML XSLT-примеры

Учебник по XQuery

Введение в XQuery Пример XQuery XQuery FLWOR XQuery HTML Условия XQuery Синтаксис XQuery XQuery Добавить Выбор XQuery Функции XQuery

XML -DTD

Введение в DTD Строительные блоки DTD Элементы DTD Атрибуты DTD Элементы DTD и Attr Сущности DTD Примеры DTD

XSD- схема

Введение в XSD XSD Как XSD <схема> XSD-элементы XSD-атрибуты XSD-ограничения

Комплекс XSD

XSD-элементы XSD пустой Только элементы XSD Только текст XSD XSD смешанный XSD-индикаторы XSD <любой> XSD <любой атрибут> Замена XSD Пример XSD

XSD- данные

XSD-строка XSD-дата XSD числовой XSD Разное Справочник по XSD

Веб- сервисы

XML-сервисы XML WSDL XML-МЫЛО XML RDF XML RSS

использованная литература

Типы узлов DOM DOM-узел Список узлов DOM DOM NamedNodeMap Документ DOM DOM-элемент Атрибут DOM DOM-текст ДОМ CDATA Дом Комментарий DOM XMLHttpRequest Парсер DOM XSLT-элементы Функции XSLT/XPath

Объект XMLHttpRequest _


Все современные браузеры имеют встроенный объект XMLHttpRequest для запроса данных с сервера.

Все основные браузеры имеют встроенный анализатор XML для доступа к XML и управления им.


Объект XMLHttpRequest

Объект XMLHttpRequest можно использовать для запроса данных с веб-сервера.

Объект XMLHttpRequest — мечта разработчика , потому что вы можете:

  • Обновите веб-страницу без перезагрузки страницы
  • Запросить данные с сервера - после загрузки страницы
  • Получить данные с сервера - после загрузки страницы
  • Отправка данных на сервер - в фоновом режиме

Пример запроса XMLHttp

Когда вы вводите символ в поле ввода ниже, XMLHttpRequest отправляется на сервер, и возвращаются некоторые предложения имени (с сервера):

Пример

Start typing a name in the input field below:

Name:

Suggestions:


Отправка XMLHttpRequest

Все современные браузеры имеют встроенный объект XMLHttpRequest.

Общий синтаксис JavaScript для его использования выглядит примерно так:

Пример

var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
    if (this.readyState == 4 && this.status == 200) {
       // Action to be performed when the document is read;
    }
};
xhttp.open("GET", "filename", true);
xhttp.send();

Создание объекта XMLHttpRequest

Первая строка в приведенном выше примере создает объект XMLHttpRequest:

var xhttp = new XMLHttpRequest();

Событие onreadystatechange

Свойство readyState содержит статус XMLHttpRequest.

Событие onreadystatechange запускается каждый раз при изменении readyState.

Во время запроса к серверу readyState изменяется с 0 на 4:

0: запрос не инициализирован
1: соединение с сервером установлено
2: запрос получен
3: запрос обрабатывается
4: запрос завершен, ответ готов

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

xhttp.onreadystatechange = function()

Когда readyState равен 4, а статус равен 200, ответ готов:

if (this.readyState == 4 && this.status == 200)

Свойства и методы XMLHttpRequest

Method Description
new XMLHttpRequest() Creates a new XMLHttpRequest object
open(method, url, async) Specifies the type of request
method: the type of request: GET or POST
url: the file location
async: true (asynchronous) or false (synchronous)
send() Sends a request to the server (used for GET)
send(string) Sends a request string to the server (used for POST)
onreadystatechange A function to be called when the readyState property changes
readyState The status of the XMLHttpRequest
0: request not initialized
1: server connection established
2: request received
3: processing request
4: request finished and response is ready
status 200: OK
404: Page not found
responseText The response data as a string
responseXML The response data as XML data

Доступ через домены

Из соображений безопасности современные браузеры не разрешают доступ между доменами.

Это означает, что и веб-страница, и XML-файл, который она пытается загрузить, должны находиться на одном сервере.

В примерах W3Schools все открытые XML-файлы расположены в домене W3Schools.

Если вы хотите использовать приведенный выше пример на одной из ваших собственных веб-страниц, загружаемые файлы XML должны находиться на вашем собственном сервере.


Свойство responseText

Свойство responseText возвращает ответ в виде строки.

Если вы хотите использовать ответ в виде текстовой строки, используйте свойство responseText:

Пример

document.getElementById("demo").innerHTML = xmlhttp.responseText;

Свойство responseXML

Свойство responseXML возвращает ответ в виде объекта XML DOM.

Если вы хотите использовать ответ как объект XML DOM, используйте свойство responseXML:

Пример

Запросите файл cd_catalog.xml и используйте ответ как объект XML DOM:

xmlDoc = xmlhttp.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;

ПОЛУЧИТЬ или ПОСТАВИТЬ?

GET проще и быстрее, чем POST, и может использоваться в большинстве случаев.

Однако всегда используйте POST-запросы, когда:

  • Кэшированный файл не вариант (обновите файл или базу данных на сервере)
  • Отправка большого количества данных на сервер (POST не имеет ограничений по размеру)
  • Отправка пользовательского ввода (который может содержать неизвестные символы) POST более надежен и безопасен, чем GET.

URL - файл на сервере

Параметр url метода open() — это адрес файла на сервере:

xmlhttp.open("GET", "xmlhttp_info.txt", true);

Это может быть файл любого типа, например .txt и .xml, или файлы сценариев сервера, такие как .asp и .php (которые могут выполнять действия на сервере перед отправкой ответа обратно).


Асинхронность — правда или ложь?

Чтобы отправить запрос асинхронно, для параметра async метода open() должно быть установлено значение true:

xmlhttp.open("GET", "xmlhttp_info.txt", true);

Отправка асинхронных запросов — огромное улучшение для веб-разработчиков. Многие задачи, выполняемые на сервере, требуют очень много времени.

Отправляя асинхронно, JavaScript не должен ждать ответа сервера, а вместо этого может:

  • выполнять другие скрипты, ожидая ответа сервера
  • обрабатывать ответ, когда ответ готов

Асинхронный = правда

При использовании async = true укажите функцию для выполнения, когда ответ будет готов в событии onreadystatechange:

Пример

xmlhttp.onreadystatechange = function() {
    if (this.readyState == 4 && this.status == 200) {
       document.getElementById("demo").innerHTML = this.responseText;
    }
};
xmlhttp.open("GET", "xmlhttp_info.txt", true);
xmlhttp.send();

Асинхронный = ложь

Чтобы использовать async = false, измените третий параметр в методе open() на false:

xmlhttp.open("GET", "xmlhttp_info.txt", false);

Использование async = false не рекомендуется, но для нескольких небольших запросов это может подойти.

Помните, что JavaScript НЕ будет продолжать выполняться, пока не будет готов ответ сервера. Если сервер занят или работает медленно, приложение зависнет или остановится.

Примечание. Когда вы используете async = false, НЕ пишите функцию onreadystatechange — просто поместите код после оператора send():

Пример

xmlhttp.open("GET", "xmlhttp_info.txt", false);
xmlhttp.send();
document.getElementById("demo").innerHTML = xmlhttp.responseText;

XML-парсер

Все современные браузеры имеют встроенный анализатор XML.

Объектная модель документа XML (XML DOM) содержит множество методов для доступа и редактирования XML.

Однако прежде чем к XML-документу можно будет получить доступ, он должен быть загружен в объект XML DOM.

Синтаксический анализатор XML может читать обычный текст и преобразовывать его в объект XML DOM.


Разбор текстовой строки

В этом примере текстовая строка преобразуется в объект XML DOM и извлекается из нее информация с помощью JavaScript:

Пример

<html>
<body>

<p id="demo"></p>

<script>
var text, parser, xmlDoc;

text = "<bookstore><book>" +
"<title>Everyday Italian</title>" +
"<author>Giada De Laurentiis</author>" +
"<year>2005</year>" +
"</book></bookstore>";

parser = new DOMParser();
xmlDoc = parser.parseFromString(text,"text/xml");

document.getElementById("demo").innerHTML =
xmlDoc.getElementsByTagName("title")[0].childNodes[0].nodeValue;
</script>

</body>
</html>

Старые браузеры (IE5 и IE6)

Старые версии Internet Explorer (IE5 и IE6) не поддерживают объект XMLHttpRequest.

Для обработки IE5 и IE6 проверьте, поддерживает ли браузер объект XMLHttpRequest, или создайте ActiveXObject:

Пример

if (window.XMLHttpRequest) {
    // code for modern browsers
    xmlhttp = new XMLHttpRequest();
 } else {
    // code for old IE browsers
    xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}

Старые версии Internet Explorer (IE5 и IE6) не поддерживают объект DOMParser.

Для обработки IE5 и IE6 проверьте, поддерживает ли браузер объект DOMParser, или создайте ActiveXObject:

Пример

if (window.DOMParser) {
  // code for modern browsers
  parser = new DOMParser();
  xmlDoc = parser.parseFromString(text,"text/xml");
} else {
  // code for old IE browsers
xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
  xmlDoc.async = false;
  xmlDoc.loadXML(text);

Дополнительные примеры


Получить информацию о заголовке ресурса (файла).


Получить конкретную информацию о заголовке ресурса (файла).


Как веб-страница может обмениваться данными с веб-сервером, когда пользователь вводит символы в поле ввода.


Как веб-страница может получать информацию из базы данных с помощью объекта XMLHttpRequest.


Создайте XMLHttpRequest для извлечения данных из XML-файла и отображения данных в таблице HTML.