Добавил:
Upload Опубликованный материал нарушает ваши авторские права? Сообщите нам.
Вуз: Предмет: Файл:

ИТ лабы

.pdf
Скачиваний:
9
Добавлен:
10.05.2015
Размер:
578.88 Кб
Скачать

40

использование динамического изменения содержания страницы;

использование DOM (Document Object Model – объектная модель документов), (через код JavaScript) для работы и со структурой HTML документа, и (в некоторых случаях) с XML, полученным от сервера;

использование в качестве формата передачи данных XML или JSON

Ajax помещает технологию JavaScript и объект XMLHttpRequest между Web-формой и сервером. Когда пользователи заполняют формы, данные передаются в некоторый JavaScript-код, в объект Объкт XMLHttpReques, а не прямо на сервер.

Затем объект XMLHttpReques передает запрос на сервер. При этом запрос передается в фоновом режиме, не прерывая работу пользователя с формой. Кроме того запрос передается асинхронно, то есть JavaScript-код (и пользователь) не ожидают ответа сервера, а продолжается его выполнение. Пользователи могут продолжать вводить данные, прокручивать страницу и работать с приложением.

Затем сервер передает данные обратно в JavaScript-код, выполняемый в Web-форме, в объект XMLHttpReques, производит обработку полученных данных (средствами JavaScript-кода). При этом поля формы могут обновляться "на лету", то есть элементы формы могут получать новые данные без подтверждения их обновления форм пользователем. То есть объект XMLHttpRequest может общаться с сервером без вмешательства пользователя.

Таким образом, технология Ajax подразумевает выполнение следующих действий:

извлечение данных формы посредством JavaScript-кода, на основе DOM;

передачу данных на сервер средствами объекта XMLHttpRequest;

получение данных с сервера средствами объекта XMLHttpRequest;

анализ полученных данных сервера;

41

изменение значения в форме (так же на основе DOM) в асинхронном режиме, то есть, не прерывая выполнения других сценариев. При этом может производиться не только установка значений полей, но даже замена изображений.

XMLHttpRequest является центральным для Ajaxприложений

Создается данный объект, как и другие объекты JavaScript, с помощью соответствующего конструктора объекта:

xmlHttp = new XMLHttpRequest();

Однако в браузерах Microsoft объект XMLHttpRequest рассматривается как один из вариантов объектов ActiveX, поэтому для его создания используется соответствующий конструктор:

xmlHttp = new ActiveXObject(“ТипОбъектаActiveX“);

В качестве значения параметра “ТипОбъеткаActiveX“ для браузеров версии позднее 5 указывается "Msxml2.XMLHTTP", для более ранних версий браузеров указывается "Microsoft.XMLHTTP".

Для того чтобы любые варианты браузеров могли создать объект, можно использовать универсальный вариант кода:

var xmlHttp = false; /*@cc_on @*/

/*@if (@_jscript_version >= 5) try

{xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");

}

catch (e) {try

{xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");

}

catch (e2) {xmlHttp = false;

}

}

@end @*/

if (!xmlHttp && typeof XMLHttpRequest != 'undefined') { xmlHttp = new XMLHttpRequest();

}

42

где – /*@ @*/ директивы компилятору JavaScript.

Содержание основных действий технологии Ajax

Извлечение данных формы посредством JavaScript-кода, на основе DOM

Объектная модель документа (DOM) подразумевает обращение к значению элементов через иерархию объектов, образующих документ. Например:

document.id1.id11.value= “111”; var dd = document.id1.id11.value;

где document – это объект, соответствующий текущему документу HTML в целом;

id1 – идентификатор, то есть значение атрибута ID или Name, элемента, входящего в документ непосредственно (непосредственно дочернего текущему документу, вне других элементов);

id11 – значение атрибута Name или ID элемента, входящего в элемент id1(непосредственно дочернего id1);

value – ссылка на значение элемента ID11.

Объектная модель кроме того подразумевает использование функций доступа к значению элементов по их идентификатору: var phone = document.getElementById("phone").value;

Передача данных на сервер средствами объекта XMLHttpRequest

Для передачи данных на сервер необходимо:

создать URL для подключения;

открыть соединение с сервером;

установить функцию, которая выполнится после получения ответа от сервера;

передать запрос.

Создание URL для подключения.

При использовании метода передачи GET (в ajax обычно используется данный метод) URL подключение создается в виде значение текстовой переменной, содержащей адрес документа

43

обработчика и предаваемые параметры. Передаваемые параметры отделяются от адреса знаком “?”

var url = ž/test/getZipCode.php?fam=¡ + escape(fam) + ž&phone=¡ + escape(phone);

где idfam , idphone – идентификаторы некоторых элементов формы;

fam, phone – значение переменных, которое передается как значение элементов.

Метод escape() возвращает строку (в формате Unicode). Все пробелы, пунктуация и любые не-ASCII символы в ней закодированы и выглядят как %xx, где xx эквивалентно шестнадцатиричному числу, обозначающему символ. Например, пробелы будут возвращены как µ%20¶. Символы, числовые значения которых больше 255 будут представлены в формате %uxxxx. Использование данного метода позволяет обеспечить передачу всех возможных символов.

Соединение с сервером

Соединение с сервером открывается с помощью операции open объекта XMLHttpRequest

open(žМетодПередачи¡, url, ПереключательАсинхронногоРежима);

где МетодПередачи – метод передачи (GET или POST), обычно используется метод GET;

url – сформированный ранее url для подключения, представленный в виде значения текстовой переменной или константы;

ПереключательАсинхронногоРежима – логический параметр (возможные значения true или false), при значении true асинхронный режим включён. Обычно используется включённый асинхронный режим.

Установка функции, которая выполнится после получения ответа от сервера

Функция, выполняемая после получения ответа от сервера, устанавливается в виде значения соответствующего свойства onreadystatechange объекта XMLHttpRequest. Обычно на данную функцию возлагаются задачи, связанные с обработкой полученных данных от сервера и изменением значений элементов формы.

44

Пусть в рассматриваемом примере эти задачи будет выполнять функция updatePage:

xmlHttp.onreadystatechange = updatePage; Пример содержания данной функции. function updatePage() {

if (xmlHttp.readyState == 4) {

var response = xmlHttp.responseText; document.getElementById("famPhone").value = response;

}

}

В данном случае функция выполняет установку значения элемента с атрибутом id="famPhone". Значение берётся из свойства объекта XMLHttpRequest – responseText в примере – xmlHttp.responseText. Данное свойство содержит данные, переданные из документа обработчика (в документе обработчике выведено на печать командой echo или write).

Свойство readyState объекта XMLHttpRequest указывает на то, в какой степени выполнен запрос на сервер. При значении данного свойства равном 4 – запрос выполнен.

Свойство responseText содержит данные, полученные от сервера. Эти данные формируются как результат операторов вывода на печать (echo, print) в файле-обработчике формы.

Передача запроса

Запрос передаётся с помощью метода send объекта XMLHttpRequest:

send(ПередаваемыеДанные)

где ПередаваемыеДанные – передаваемые данные на сервер. В том случае, когда все данные включены в описание URL подключения, то их передача в методе send не требуется. В данном случае, качестве передаваемых данных указывается значение null.

Например,

xmlHttp.send(null);

Действия, связанные с реализации технологии ajax, оформляются в виде функции, в данном случае функция callServer().

function callServer() {

// Получить phone и fam из web-формы

var phone = document.getElementById("phone").value; var fam = document.getElementById("fam").value;

45

//Продолжать только если есть значения обоих полей if ((phone == null) || (phone == "")) return;

if ((fam == null) || (fam == "")) return;

//Создать URL для подключения

var url = "/test/getZipCode.php?fam=" + escape(fam) + "&phone=" + escape(phone);

//Открыть соединение с сервером xmlHttp.open("GET", url, true);

//Установить функцию для сервера, которая выполнится после его ответа

xmlHttp.onreadystatechange = updatePage;

//SПередать запрос

xmlHttp.send(null);

}

Данная функция устанавливается на события управляющих элементов формы onChange.

<form >

<label for="fam"> фамилия </label><input type="text" id="fam" name="fam" onChange="callServer()"><br>

<label for="phone"> телефон </label><input type="text" id="phone" name="phone" onChange="callServer()"> <br>

<label for="famPhone"> фамилия+телефон</label><input type="text" id="famPhone"> <br>

<button type="submite"></button> </form>

3.ПОРЯДОК ВЫПОЛНЕНИЯ

1.Создать форму HTML в соответствии с заданием.

2.Создать документ обработчик PHP, обеспечивающий выполнение требуемых действий.

3.Создать программный код в документе HTML, реализующий элементы технологии AJAX.

46

4. ЗАДАНИЕ

Заданием для работы является создание документа HTML, в который включена форма, и документаобработчика PHP. совместно реализующих элементы технологии AJAX. Индивидуальными являются задания, аналогичные работе № 5, но требуемые функции должны реализовываться на основе технологии AJAX. Результат должен выводиться в текстовое поле, расположенное ниже основных управляющих элементов.

5.КОНТРОЛЬНЫЕ ВОПРОСЫ

1.Что собой представляет технология AJAX?

2.Как согласно технологии AJAX осуществляется обмен данными между пользовательской страницей и сервером?

3.Для чего служит объект XMLHttpReques, его основные функции, как он создается?

4.Какие действия должны выполняться в web-приложении, работающем по технологии AJAX?

5.Как извлекаются данные формы на основе модели DOM?

6.Какие действия выполняются при передаче данных серверу, при работе приложения на основе технологии AJAX?

7.Как устанавливаются данные, полученные от сервера, на элементы формы?

СПИСОК РЕКОМЕНДУЕМОЙ ЛИТЕРАТУРЫ

1.http://html.manual.ru/

2.http://www.machaon.ru/digest/rusinter.HTML.html

3.http://digkiller.narod.ru/webmaster

4.http://postroika.ru

5.Меженный, О. А. Microsoft Office 2007. Краткое руководство / О. А. Меженный. – М.: Диалектика, 2008. – 384 с., с ил.

47

 

 

 

 

 

ПРИЛОЖЕНИЕ

 

Основные элементы HTML

 

Таблица 1

 

 

 

 

 

 

Тег

Назначение

Ти

Атрибуты

Примечание

 

 

 

п

 

 

 

<P>… </P>

Определяет

Бл

id, class, style, ti-

не может содер-

 

абзац текста

 

tle, lang, dir, со-

жать других блоч-

 

 

 

 

бытия

ных элементов

<BR>

Разрыв строки

-

id, class, style, ti-

 

 

 

 

 

 

tle

 

 

<PRE>…

Предвари-

Бл

id, class, style, ti-

может

содержать

</PRE>

тельно

от-

 

tle, lang, dir, со-

IMG,

OBJECT,

 

форматиро-

 

бытия

BIG, SMALL, SUB

 

ванный текст

 

 

или SUP

 

Фразовые эле-

 

 

 

 

 

менты

 

 

 

 

 

<Hn>…

Заголовки

Бл

id, class, style, ti-

 

 

</Hn>

 

 

 

tle, lang, dir, со-

 

 

 

 

 

 

бытия

 

 

<EM>

Выделение

T

id, class, style, ti-

По

умолчанию

…</EM>

текста:

 

 

tle, lang, dir, со-

курсивным шриф-

 

 

 

 

бытия

том

 

<STRONG>

Сильное

вы-

T

id, class, style, ti-

По умолчанию по-

</STRONG>

деление

 

 

tle, lang, dir, со-

лужирный шрифт

 

 

 

 

бытия

 

 

<CITE>

Ссылка:

 

Т

id, class, style, ti-

По

умолчанию

…</CITE>

 

 

 

tle, lang, dir, со-

курсивным шриф-

 

 

 

 

бытия

том

 

<DFN>…

Определение

Т

id, class, style, ti-

По

умолчанию

</DFN>

термина

 

 

tle, lang, dir, со-

курсивным шриф-

 

 

 

 

бытия

том

 

<CODE>…

Фрагмент

Т

id, class, style, ti-

По умолчанию те-

</CODE>

программного

 

tle, lang, dir, со-

летайпным шриф-

 

кода

 

 

бытия

том

 

<SAMP>

Пример выво-

T

id, class, style, ti-

По умолчанию те-

…</SAMP>

да результатов

 

tle, lang, dir, со-

летайпным шриф-

 

 

 

 

бытия

том

 

<KBD>…

Пример

ввода

T

id, class, style, ti-

По умолчанию те-

</KBD>

данных

 

 

tle, lang, dir, со-

летайпным шриф-

 

 

 

 

бытия

том

 

 

 

 

 

 

 

 

48

Продолжение табл. 1

<VAR>…

Переменные и

Т

id, class, style, ti-

Умолчанию

кур-

</VAR>

 

аргументы

 

 

tle, lang, dir, со-

сивным шрифтом

 

 

 

 

 

бытия

 

 

 

 

 

 

 

 

 

 

 

 

<ABBR>…

Аббревиатура

Т

id, class, style, ti-

 

 

 

 

</ABBR>

 

 

 

tle, lang, dir, со-

 

 

 

 

 

 

 

 

 

бытия

 

 

 

 

 

 

 

 

 

 

 

 

<ACRONY

Аббревиатура,

Т

id, class, style, ti-

 

 

 

 

M>…</ACR

произносимая

 

tle, lang, dir, со-

 

 

 

 

ONYM>

единое слово,

 

бытия

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

Задание

 

 

 

 

 

 

 

 

 

шрифта

 

 

 

 

 

 

 

<TT>

 

Телетайпный

Т

id, class, style, ti-

* фразовые

 

…</TT>

шрифт

 

 

tle, lang, dir, со-

 

 

 

 

 

 

 

 

 

бытия

 

 

 

 

 

 

 

 

 

 

 

 

<I>

 

Курсивный

 

Т

id, class, style, ti-

* фразовые

 

…</I>

 

шрифт:

 

 

tle, lang, dir, со-

 

 

 

 

 

 

 

 

 

бытия

 

 

 

 

 

 

 

 

 

 

 

<B>…

</B>

Полужирный

Т

id, class, style, ti-

* фразовые

 

 

 

шрифт:

 

 

tle, lang, dir, со-

 

 

 

 

 

 

 

 

 

бытия

 

 

 

 

 

 

 

 

 

 

 

<BIG>…

Крупный

 

Т

id, class, style, ti-

* заголовки

 

</BIG>

 

шрифт

 

 

tle, lang, dir, со-

 

 

 

 

 

 

 

 

 

бытия

 

 

 

 

<SMALL>…

Мелкий

 

Т

id, class, style, ti-

 

 

 

 

</SMALL>

шрифт:

 

 

tle, lang, dir, со-

 

 

 

 

 

 

 

 

 

бытия

 

 

 

 

<SUP>…

Верхние

и

Т

id, class, style, ti-

 

 

 

 

</SUP>

и

нижние

ин-

 

tle, lang, dir, со-

 

 

 

 

<SUB>…</S

дексы

 

 

бытия

 

 

 

 

UB>

 

 

 

 

 

 

 

 

 

 

 

Цитаты

 

 

 

 

 

 

 

<BLOCKQU

Блочные

ци-

Бл

id, class, style, ti-

Маркировка

блоч-

OTE>…</BL

таты

 

 

tle, lang, dir, со-

ных

цитат,

со-

OCKQUOTE

 

 

 

бытия,

стоящих

из

не-

>

 

 

 

 

cite=URI

скольких строк

<Q>…</Q>

Краткие цита-

Т

id, class, style, ti-

Для

маркировки

 

 

ты

 

 

tle, lang, dir, со-

кратких

цитат, со-

 

 

 

 

 

бытия,

стоящих из одной

 

 

 

 

 

cite=URI

фразы (курсив)

49

Продолжение табл. 1

 

Маркировка

 

 

 

 

 

изменений

в

 

 

 

 

 

документе

 

 

 

 

 

<INS>

Вставка

тек-

 

id, class, style, ti-

отображается

под-

…</INS>

ста

 

 

tle, lang, dir, со-

черкнутым

тек-

 

 

 

 

бытия,

стом

 

 

 

 

 

cite=URI

 

 

<DEL>…</D

Удаление тек-

 

id, class, style, ti-

отображается

пе-

EL>

ста

 

 

tle, lang, dir, со-

речеркну-

 

 

 

 

 

бытия,

тым

тек-

 

 

 

 

cite=URI

стом

 

 

Списки

 

 

 

 

 

<UL>…</UL

Маркирован-

Б

id, class, style, ti-

 

 

>

ные списки

Л

tle, lang, dir, со-

 

 

 

 

 

 

бытия,

 

 

<OL>…</OL

Нумерован-

Бл

id, class, style, ti-

 

 

>

ные списки

 

tle, lang, dir, со-

 

 

 

 

 

 

бытия,

 

 

<LI>…</LI>

Элементы

 

Бл

id, class, style, ti-

 

 

 

списков

 

 

tle, lang, dir, со-

 

 

 

 

 

 

бытия,

 

 

<DL>…</DL

Списки опре-

Б

id, class, style, ti-

 

 

>

делений

 

Л

tle, lang, dir, со-

 

 

 

 

 

 

бытия,

 

 

 

 

 

 

 

 

<DT>…</DT

Имя опреде-

Бл

id, class, style, ti-

 

 

>

ляемого

тер-

 

tle, lang, dir, со-

 

 

 

мина

 

 

бытия,

 

 

 

 

 

 

 

 

<DD>…</D

Определение

Бл

id, class, style, ti-

 

 

D>

этого термина

 

tle, lang, dir, со-

 

 

 

 

 

 

бытия,

 

 

Соседние файлы в предмете [НЕСОРТИРОВАННОЕ]