русс | укр

Языки программирования

ПаскальСиАссемблерJavaMatlabPhpHtmlJavaScriptCSSC#DelphiТурбо Пролог

Компьютерные сетиСистемное программное обеспечениеИнформационные технологииПрограммирование

Все о программировании


Linux Unix Алгоритмические языки Аналоговые и гибридные вычислительные устройства Архитектура микроконтроллеров Введение в разработку распределенных информационных систем Введение в численные методы Дискретная математика Информационное обслуживание пользователей Информация и моделирование в управлении производством Компьютерная графика Математическое и компьютерное моделирование Моделирование Нейрокомпьютеры Проектирование программ диагностики компьютерных систем и сетей Проектирование системных программ Системы счисления Теория статистики Теория оптимизации Уроки AutoCAD 3D Уроки базы данных Access Уроки Orcad Цифровые автоматы Шпаргалки по компьютеру Шпаргалки по программированию Экспертные системы Элементы теории информации

Получение синхронного ответа


Дата добавления: 2015-07-09; просмотров: 419; Нарушение авторских прав


 

Объект XMLHttpRequest хранит не только информацию о HTTP_запросе, но и ответ сервера. Если методу open() третьим аргументом передается значение false, ме_ тод send() выполнит запрос синхронно: он не вернет управление до тех пор, пока не будет получен ответ сервера.2

 

Метод send() не возвращает код состояния. После того как он вернет управление, можно проверить код состояния HTTP, возвращаемый сервером в свойстве sta_ tus объекта запроса. Возможные значения кода состояния определяются прото_ колом HTTP. Код состояния 200 означает успешное завершение запроса и дос_ тупность ответа. В то же время код состояния 404 означает ошибку «не найде_ но», которая возникает в случае, когда указанный URL_адрес не существует.

1 Подробное описание протокола HTTP выходит за рамки темы этой книги. За допол_ нительной информацией об этих и других заголовках, используемых при выпол_ нении HTTP_запросов, обращайтесь к техническому описанию протокола HTTP.

 

2 Объект XMLHttpRequest обладает поистине удивительными возможностями, но его прикладной программный интерфейс продуман недостаточно. Например, логи_ ческое значение, определяющее синхронное или асинхронное поведение, в дейст_ вительности должно было бы быть аргументом метода send().


 

20.1. Использование объекта XMLHttpRequest
   

 

Объект XMLHttpRequest возвращает ответ сервера в виде строки, доступной через свойство responseText объекта запроса. Если ответ представляет собой XML_доку_ мент, к нему можно обращаться как к DOM_объекту Document через свойство re_ sponseXML. Обратите внимание: чтобы объект XMLHttpRequest воспринял и преобра_ зовал ответ сервера в объект Document, сервер должен явно идентифицировать его как XML_документ, указав MIME_тип "text/xml".



 

Когда запрос выполняется синхронно, программный код, следующий за вызо_ вом метода send(), обычно выглядит как_то так:

 

if (request.status == 200) {

 

// Ответ сервера получен. Отобразить текст ответа. alert(request.responseText);

}

else {

 

// Что_то пошло не так. Отобразить код ошибки и сообщение. alert("Error " + request.status + ": " + request.statusText);

 

}

 

Помимо кода состояния и ответа сервера в виде текста или документа объект XMLHttpRequest предоставляет доступ к HTTP_заголовкам, полученным от серве_ ра. Метод getAllResponseHeaders() возвращает заголовки ответа в виде одного сплошного блока текста, а метод getResponseHeader() возвращает значение заго_ ловка по его имени. Например:

 

if (request.status == 200) { // Убедиться в отсутствии ошибок // Убедиться, что ответ _ это XML_документ

 

if (request.getResponseHeader("Content_Type") == "text/xml") { var doc = request.responseXML;

// Теперь обработать полученный документ

}

}

 

При использовании объекта XMLHttpRequest в синхронном режиме существует од_ на серьезная проблема: если веб_сервер не ответит на запрос, метод send() ока_ жется заблокированным на достаточно продолжительное время. Исполнение JavaScript_сценария прекратится, создавая ощущение, что веб_броузер «повис» (разумеется, это во многом зависит от типа платформы). Когда сервер прекраща_ ет процесс передачи обычной страницы, пользователь может просто щелкнуть на кнопке Остановить и попробовать перейти по другой ссылке или ввести другой URL_адрес. Однако на объект XMLHttpRequest кнопка Остановить никакого воздей_ ствия не оказывает. Метод send() не предоставляет возможности определить максимальное время ожидания, а однопоточная модель исполнения сценариев в JavaScript не позволяет прервать работу объекта XMLHttpRequest в синхронном режиме после того как запрос отправлен.

 

Решение этой проблемы заключается в использовании объекта XMLHttpRequest в асинхронном режиме.

 



<== предыдущая лекция | следующая лекция ==>
Отправка запроса | Обработка асинхронного ответа


Карта сайта Карта сайта укр


Уроки php mysql Программирование

Онлайн система счисления Калькулятор онлайн обычный Инженерный калькулятор онлайн Замена русских букв на английские для вебмастеров Замена русских букв на английские

Аппаратное и программное обеспечение Графика и компьютерная сфера Интегрированная геоинформационная система Интернет Компьютер Комплектующие компьютера Лекции Методы и средства измерений неэлектрических величин Обслуживание компьютерных и периферийных устройств Операционные системы Параллельное программирование Проектирование электронных средств Периферийные устройства Полезные ресурсы для программистов Программы для программистов Статьи для программистов Cтруктура и организация данных


 


Не нашли то, что искали? Google вам в помощь!

 
 

© life-prog.ru При использовании материалов прямая ссылка на сайт обязательна.

Генерация страницы за: 0.095 сек.