Книга: JavaScript. Подробное руководство, 6-е издание
18.1.3.3. Запросы с данными в формате XML
18.1.3.3. Запросы с данными в формате XML
Иногда для представления передаваемых данных также используется формат XML. Данные в запросе информации о пиццерии можно было бы передавать не в формате представления данных форм и не в формате JSON представления JavaScript-объектов, а в формате XML-документа. Тело такого запроса могло бы иметь следующий вид:
<query>
<find zipcode="02134" radius="1km"> pizza </find>
</query>
Во всех примерах, встречавшихся до сих пор, аргументом метода send()
объекта XMLHttpRequest
была строка или значение null. В действительности же этому методу можно также передать объект Document XML-документа. Пример 18.8 демонстрирует, как создать объект Document
простого XML-документа и использовать его в качестве тела НТТР-запроса.
Пример 18.8. Выполнение запроса HTTP POST с XML-документом в качестве тела
// Параметры поиска "что", "где" и "радиус" оформляются в виде XML-документа // и отправляются по указанному URL-адресу. При получении ответа вызывает // указанную функцию
function post()uery(url, what, where, radius, callback) {
var request = new XMLHttpRequest();
request.open("POST", url); // Методом POST на указанный url
request.onreadystatechange = function() { // Простой обработчик
if (request.readyState === 4 && callback) callback(request);
};
// Создать XML-документ с корневым элементом <query>
var doc = document.implementation.createDocument("", "query", null);
var query = doc.documentElement; // Элемент <query>
var find = doc.createElement("find"); // Создать элемент <find>
query.appendChild(find); // И добавить в <query>
find.setAttribute("zipcode", where); // Атрибуты <find>
find.setAttribute("radius”, radius);
find.appendChild(doc.createTextNode(what)); // И содержимое <find>
// Отправить данные в формате XML серверу.
// Обратите внимание, что заголовок Content-Type будет установлен автоматически,
request.send(doc);
}
Обратите внимание, что пример 18.8 не устанавливает заголовок «Content-Type» запроса. Когда методу send()
передается XML-документ, то объект XMLHttpRequest
автоматически установит соответствующий заголовок «Content-Type», если он не был установлен предварительно. Аналогично, если передать методу send()
простую строку и не установить заголовок «Content-Type», объект XMLHttpRequest
автоматически добавит этот заголовок со значением «text/plain; charset=UTF-8». Программный код в примере 18.1 явно устанавливает этот заголовок, но в действительности для данных в простом текстовом виде этого не требуется.
- 18.1.3.1. Запросы с данными в формате HTML-форм
- Пример 5.5. XML-формат
- Тестирование Web-сервиса XML с помощью WebDev.WebServer.exe
- Преобразование XML в реляционную базу данных
- Запросы на обновление
- Как продолжить работать с данными, которые я сохранил вчера?
- Время показывается в 12-часовом формате, а мне привычнее 24-часовой. Как это изменить?
- Обмен данными между гостевой и хостовой ОС
- Запросы, подсчитывающие строки
- Можно ли копировать права доступа вместе с данными?
- С помощью какой программы можно открыть файл в формате DjVu?
- Как обрезать аудиофайл в формате MP3?