Общее представление об AJAX. Часть 2

Отправка запроса GET

Отправка запроса HTTP на сервер с помощью объекта XMLHttpRequest организуется в три этапа.

  1. Указание URL и команды HTTP для последующего выполнения на сервере.
  2. Определение функции обратного вызова при поступлении результатов запроса.
  3. Отправка запроса.

На первом этапе используется метод open() объекта XMLHttpRequest. Но это означает не установление HTTP-соединения, а лишь инициализацию данного объекта. С помощью метода open() указывается URL и команда HTTP для последующего выполнения (как правило, GET или POST).

На втором этапе в свойстве onreadystatechange данного объекта указывается функция обратного вызова. Данная функция вызывается всякий раз, когда изменяется свойство readyState объекта XMLHttpRequest. И наконец, на третьем этапе посылается запрос HTTP с помощью метода send().

Значение 4 свойства readyState в функции обратного вызова означает требуемое состояние объекта, т.е. завершение вызова. В данном случае свойство responseText содержит данные, возвращаемые сервером.

Ниже приведен пример отправки запроса GET на сервер (в данном случае это запрос файла sometext.txt, содержащего простой текст) и последующей реакции на этот вызов.

var XMLHttp = getXMLHttp();
XMLHttp.open("GET", "sometext.txt", true);
XMLHttp.onreadystatechange = handlerFunction;
XMLHttp.send(null);

function handlerFunction() {
  if (XMLHttp.readyState == 4) {
    window.alert("Returned data: " + XMLHttp.responseText);
  }
}

function getXMLHttp() {
  var XMLHttp = null;
  if (window.XMLHttpRequest) {
    try {
      XMLHttp = new XMLHttpRequest();
    } catch (e) { }
  } else if (window.ActiveXObject) {
    try {
      XMLHttp = new ActiveXObject("Msxml2.XMLHTTP");
    } catch (e) {
      try {
        XMLHttp = new ActiveXObject("Microsoft.XMLHTTP");
      } catch (e) { }
    }
  }
  return XMLHttp;
}

Состояния объекта XMLHttpRequest

В общем, объект XMLHttpRequest может находиьтся в одном из пяти состояний, представленных ниже. В зависимости от способа внедрения данного объекта все эти состояния наступают во время выполнения сценария AJAX. Именно поэтому очень важно всегда запрашивать состояние перед тем, как пытаться получить доступ к остальным данным объекта XMLHttpRequest.

  • 0 — не инициализировано
  • 1 — загрузка
  • 2 — загружено
  • 3 — ожидание
  • 4 — завершено

Ссылки по теме:

Оставьте свой отзыв