Опубликован: 19.10.2006 | Уровень: для всех | Доступ: платный
Дополнительный материал 1:

Краткое руководство по AJAX

< Лекция 12 || Дополнительный материал 1: 1234 || Дополнительный материал 2 >

Объект AJAX XMLHttpRequest

Объект XMLHttpRequest делает возможной технологию AJAX.

Объект XMLHttpRequest

Чтобы создавать Web-приложения AJAX, необходимо хорошо знать объект JavaScript, называемый XMLHttpRequest.

Объект XMLHttpRequest является ключевым понятием технологии AJAX. Он был доступен с момента появления в июле 2000 браузера Internet Explorer 5.5, но не был полностью понят до 2005 года, когда начались разговоры об AJAX и Web 2.0.

Ниже представлены некоторые методы и свойства этого объекта, с которыми необходимо быть знакомым.

Создание объекта XMLHttpRequest

Различные браузеры используют для создания объекта XMLHttpRequest различные методы.

Internet Explorer использует ActiveXObject.

Другие браузеры используют встроенный в JavaScript объект, называемый XMLHttpRequest.

Вот простейший код, который можно использовать, чтобы обойти эту проблему.

var XMLHttp=null

if (window.XMLHttpRequest)
  {
  XMLHttp=new XMLHttpRequest()
  }
else if (window.ActiveXObject)
  {
  XMLHttp=new ActiveXObject("Microsoft.XMLHTTP")
  }
Разбор приведенного примера

Сначала создается переменная XMLHttp для использования в качестве объекта XMLHttpRequest. Ее значение задается как null.

Затем проверяется, доступен ли объект window.XMLHttpRequest. Этот объект доступен в более новых версиях браузеров, таких как Firefox, Mozilla, и Opera.

Если объект доступен, то он используется для создания нового объекта.

XMLHttp=new XMLHttpRequest().

Если он не доступен, то проверяется, доступен ли объект window.ActiveXObject. Этот объект будет доступен в браузере Internet Explorer версии 5.5 и выше.

Если этот объект доступен, то он используется для создания нового объекта:

XMLHttp=new ActiveXObject().

Еще пример?

Некоторые программисты предпочтут использовать самую новую и быструю версию объекта XMLHttpRequest.

Следующий пример пытается использовать самую последнюю версию объекта "Msxml2.XMLHTTP" компании Microsoft, доступную в Internet Explorer 6, прежде чем обратиться к объекту "Microsoft.XMLHTTP", доступному в Internet Explorer 5.5 и выше.

var XMLHttp=null
try
{
XMLHttp=new ActiveXObject("Msxml2.XMLHTTP")
}
catch(e)
 {
 try
 {
 XMLHttp=new ActiveXObject("Microsoft.XMLHTTP")
 }
}

if (XMLHttp==null)
{
XMLHttp=new XMLHttpRequest()
}
Разбор приведенного примера

Сначала создается переменная XMLHttp для использования в качестве объекта XMLHttpRequest. Ее значение задается как null.

Затем делается попытка создания объекта способом компании Microsoft, доступным в Internet Explorer 6 и более поздних версиях:

XMLHttp=new ActiveXObject("Msxml2.XMLHTTP")

Если это порождает ошибку, то используется старый способ (Internet Explorer 5.5):

XMLHttp=new ActiveXObject("Microsoft.XMLHTTP")

Если XMLHttp по прежнему имеет значение null, то делается попытка создания объекта "стандартным" способом:

XMLHttp=new XMLHttpRequest()

Методы объекта XMLHttpRequest

Метод open()

Метод open() создает запрос для Web-сервера.

Метод send()

Метод send() посылает запрос серверу.

Метод abort()

Метод abort() отменяет текущий запрос к серверу.

Свойство readyState объекта XMLHttpRequest

Свойство readyState определяет текущее состояние объекта XMLHttpRequest.

В таблице показаны возможные значения свойства readyState:

Состояние Описание
0 Запрос не инициализирован
1 Запрос создан
2 Запрос послан
3 Запрос обрабатывается
4 Запрос завершен

readyState=0 после создания объекта XMLHttpRequest, но до вызова метода open().

readyState=1 после вызова метода open(), но до вызова метода send().

readyState=2 после вызова метода send().

readyState=3 после того, как браузер соединится с сервером, но до завершения сервером ответа.

readyState=4 после завершения запроса и полного получения всех данных ответа с сервера.

Различные браузеры используют свойство состояния готовности по-разному. Не стоит рассчитывать, что все браузеры будут сообщать обо всех состояниях. Некоторые не сообщают о состоянии 0 и 1.

Для приложений AJAX представляет интерес фактически только состояние 4. То есть, когда запрос завершен, и можно использовать полученные данные.

Свойство responseText объекта XMLHttpRequest

Свойство responseText содержит присланный сервером текст.

< Лекция 12 || Дополнительный материал 1: 1234 || Дополнительный материал 2 >
Елена Сапегова
Елена Сапегова

После прохождения теоретической части пришло письмо об окончании теоретической части курса, будет ли практическая часть?

Рустам Рахимов
Рустам Рахимов

Пол часа искал в интеренете, как что работает. Такое чувство что автор пишет для людей которые уже знают js, или просто хвастается своими знаниями. Конструкция формы непонятна. И можно было бы в кратце написать, что такое событие которое используют. Сорершенно не понятно как работает форма, и как брать из нее значение. 

function Complete() {

    var x = "Имя: " + document.tutform.firstname.value;

alert(x);

} - Так брать значение из формы tutform, firstname-получаем значение из имени. 

<INPUT TYPE="button" VALUE="Готово" onClick="Complete();"> - Нужно к кнопке прописать событие, при нажатие на кнопку готово, чтобы возвращалось значение с помощью функции. А так ничего не работает, и смысла учить нету, если не знать почему не работает.

 

Вероника Линдоренко
Вероника Линдоренко
Беларусь, Минск
Чуадум Шапда
Чуадум Шапда
Россия, Санкт Петербург