Все современные браузеры имеют встроенный XML парсер.
Этот XML парсер преобразует XML документ в объект XML DOM, которым затем можно манипулировать при помощи JavaScript.
Объект XMLHttpRequest
Объект XMLHttpRequest позволяет обмениваться данными в фоновом режиме.
Это настоящая сбывшаяся мечта разработчика, потому что вы можете:
- Обновлять содержимое веб-страницы не перезагружая веб-страницу
- Запрашивать данные с сервера, когда веб-страница уже загружена
- Получать данные с сервера, когда веб-страница уже загружена
- Посылать данные на сервер в фоновом режиме
Создание объекта XMLHttpRequest
Все современные браузеры (IE7+, Firefox, Chrome, Safari, Opera) уже имеют встроенный объект XMLHttpRequest.
Объект XMLHttpRequest создается следующим образом:
xmlhttp = new XMLHttpRequest();
Старые версии браузера Internet Explorer (IE5 и IE6) используют объект ActiveXObject:
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
Работа с объектом XMLHttpRequest
Типичный синтаксис JavaScript для работы с объектом XMLHttpRequest выглядит следующим образом:
var xhttp = new XMLHttpRequest();
xhttp.onreadystatechange = function() {
if (this.readyState == 4 && this.status == 200) {
// Typical action to be performed when the document is ready:
document.getElementById("demo").innerHTML = xhttp.responseText;
}
};
xhttp.open("GET", "filename", true);
xhttp.send();
В строке var xhttp = new XMLHttpRequest(); создается объект XMLHttpRequest.
В строке xhttp.onreadystatechange = function() свойство onreadystatechange определяет функцию, которая будет выполняться каждый раз, когда статус объекта XMLHttpRequest изменится.
Строка if (this.readyState == 4 && this.status == 200). Когда свойство readyState равно 4, и свойство status равно 200, ответ готов.
Свойство responseText возвращает ответ сервера в виде текстовой строки.
Эта текстовая строка может использоваться для изменения кода веб-страницы. Строка document.getElementById("demo").innerHTML = xhttp.responseText;.
Парсинг XML документа
Следующий фрагмент кода парсит XML документ в объект XML DOM:
if (window.XMLHttpRequest)
{
// для IE7+, Firefox, Chrome, Opera, Safari
xmlhttp = new XMLHttpRequest();
}
else
{
// для IE6, IE5
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
xmlhttp.open("GET","books.xml",false);
xmlhttp.send();
xmlDoc = xmlhttp.responseXML;
Парсинг XML строки
Следующий фрагмент кода парсит XML строку в объект XML DOM:
txt = "<bookstore><book>";
txt = txt + "<title>Everyday Italian</title>";
txt = txt + "<author>Giada De Laurentiis</author>";
txt = txt + "<year>2005</year>";
txt = txt + "</book></bookstore>";
if (window.DOMParser)
{
parser = new DOMParser();
xmlDoc = parser.parseFromString(txt,"text/xml");
}
else // Internet Explorer
{
xmlDoc = new ActiveXObject("Microsoft.XMLDOM");
xmlDoc.async = false;
xmlDoc.loadXML(txt);
}
Замечение: Браузер Internet Explorer использует метод loadXML() для парсинга XML строки, в то время, как остальные браузеры используют объект DOMParser.
Доступ к данным на других доменах
Из-за соображения безопасности современные браузеры не допускают возможности обращаться к данным на других доменах.
Это означает, что веб-страница и XML файл, который она пытается загрузить, должны находиться на одном и том же сервере.