XMLHttpRequest: Отправка запроса онлайн урок.


Рассмотрим использование класса XMLHttpRequest. Для того, чтобы определить параметры HTTP запроса, необходимо использовать метод open(method, url, ifAsync). В этом методе используются три параметра:

  • (string) method - метод протокола HTTP;

  • (string) url - URL ресурса;

  • (bool) ifAsync - параметр, определяющий, будет ли запрос асинхронным (true если да).


Этот метод еще не отправляет сам запрос, но подготавливает все для его отправки. Для самой отправки запроса необходимо использовать метод send(content), который зависит от одного строкового параметра - тела запроса. Для GET запросов тело пустое, потому в таком случае в этот метод можно подставить null.

Рассмотрим применение этих методов. Воспользуемся функцией getXMLHttpRequest() из предыдущего урока:

request = getXMLHttpRequest();
request.open('GET', 'http://google.com', true);
request.send(null);


Далее необходимо отследить изменение состояния запроса. Иными словами - был ли запрос отправлен, были ли получены данные. За текущее состояние отвечает свойство readyState

  • 0 - запрос не инициализирован
  • 1 - запрос открыт
  • 2 - отправка данных
  • 3 - получение данных
  • 4 - данные получены

Отследить текущее состояние позволяет свойство onreadystatechange, которому необходимо присвоить анонимную функцию, которая будет вызываться при каждом изменении состояния:

request.onreadystatechange = function() {
   // some actions
}


Попробуем отследить изменения состояния запроса. Для этого создадим еще один файл some_file.txt. В нем можно записать произвольную строку, например Blah. Запишем скрипт в файле index.html

request = getXMLHttpRequest();

request.onreadystatechange = function() {
     console.log(request.readyState);
}

request.open('GET', '/some_file.txt', true);
request.send(null);


В данном случае мы отправили асинхронный запрос для получения содержимого файла some_file.txt. В самой консоли мы увидим числа от 1 до 4, которые соответствуют "циклу жизни" нашего запроса.

В следующем уроке мы научимся получать тело ответа - т.е. содержимое запрошенного файла