Лабораторная работа: Создание приложений на AJAX

Листинг 5 показывает пример XML-кода, полученный с помощью метода Cart. toXml(). Сделать это достаточно просто. Запомните атрибут generated в cart элементе, который является временной меткой, полученной с помощью System. currentTimeMillis().

Листинг 5. Пример сериализации в XML-формате объекта Cart

<? xml version="1.0"? >

<cart generated="1123969988414" total="$171.95">

<item code="hat001">

<name>Hat</name>

<quantity>2</quantity>

</item>

<item code="cha001">

<name>Chair</name>

<quantity>1</quantity>

</item>

<item code="dog001">

<name>Dog</name>

<quantity>1</quantity>

</item>

</cart>

Если вы взглянете на Cart. java в источнике приложения, доступном в секции Загрузка, вы увидите, что XML получается просто с помощью соединения строк вместе. Примененный в примере, этот способ - зачастую самый худший способ получить XML из кода на языке Java. Я предложу приемы интереснее и лучше в следующей части этой серии.

Теперь вы знаете, что CartServlet запрашивается с помощью XMLHttpRequest. Следующим шагом будет возвращение к коду клиента, где вы можете увидеть, как ответ в XML-формате будет использоваться для обновления состояния страницы.

Запрос, обрабатывающийся с помощью JavaScript

readyState свойство XMLHttpRequest - числовое значение, которое определяет статус цикла запроса. Оно изменяется от 0 для "неопределенного" и до 4 для "завершенного". Каждый раз, когда меняется readyState, появляется событие readystatechange и вызывается с помощью onreadystatechange свойства оператор.

В листинге 3 вы увидели, как вызывалась функция getReadyStateHandler() для создания оператора. Этот оператор затем приписывается свойству onreadystatechange. getReadyStateHandler() использовал тот факт, что функции - объекты первого класса в JavaScript. Это обозначает, что функции могут быть параметрами к другим функциям и могут также создавать и возвращать значения других функций. Обязанности getReadyStateHandler() - возвращать значение функции, которая проверяет, завершился ли XMLHttpRequest и был отослан ли ответ в XML-формате в оператор, определенный вызовом. Листинг 6 - код для getReadyStateHandler().

Листинг 6. Функция getReadyStateHandler(). /*

* Возвращает функцию, которая ожидает, чтобы закончился

* определенный XMLHttpRequest, затем передает его ответ в XML-формате

|-------10--------20--------30--------40--------50--------60--------70--------80--------9|

|------ - XML error: The previous line is longer than the max of 90 characters - --------|

* заданному оператору * req - это XMLHttpRequest, чье состояние изменяется

|-------10--------20--------30--------40--------50--------60--------70--------80--------9|

|------ - XML error: The previous line is longer than the max of 90 characters - --------|

К-во Просмотров: 324
Бесплатно скачать Лабораторная работа: Создание приложений на AJAX