УРОКИ JAVASCRIPT HTML DOM DHTML AJAX ПРИМЕРЫ JAVASCRIPT

Асинхронная передача - Да или Нет?


« Назад Далее »

AJAX расшифровывается как Асинхронный JavaScript и XML, и для объекта XMLHttpRequest следует устанавливать параметр метода open() в true (истина), чтобы получить поведение, свойственное идее технологии AJAX.


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


xmlhttp.open("GET","ajax_test.php",true);

Отправка асинхронных запросов является огромным плюсом для веб разработчиков. Многие из задач, выполняемых на сервере являются время-затратными. До возникновения технологии AJAX эта операция могла стать причиной зависания или остановки приложения.

Благодаря AJAX скрипты JavaScript могут (при асинхронной отправке) не ждать ответа сервера и вместо этого выполняется полезная работа:

  • выполнение других скриптов во время ожидания ответа сервера
  • обработка ответа только тогда, когда он будет получен

Асинхронная отправка

При установке третьего параметра в true (т.е. при асинхронной передаче), укажите функцию, которую следует выполнить, когда будет готов ответ, - в событии onreadystatechange:

Пример

xmlhttp.onreadystatechange=function()
  {
  if (xmlhttp.readyState==4 && xmlhttp.status==200)
    {
    document.getElementById("myDiv").innerHTML=xmlhttp.responseText;
    }
  }
xmlhttp.open("GET","ajax_info.txt",true);
xmlhttp.send();

Попробуйте сами »

Вы узнаете больше о событии onreadystatechange в последующем уроке.


Синхронная передача

Чтобы отключить асинхронную отправку (т.е. запрос будет передаваться синхронно), следует установить третий параметр метода open() в false:

xmlhttp.open("GET","ajax_info.txt",false);

Использование значения false не рекомендуется, но для нескольких небольших запросов это допустимо.

Следует помнить, что JavaScript НЕ продолжит выполнение до тех пор, пока не будет получен ответ с сервера. Если сервер при этом будет занят или будет тормозить с возвратом ответа, то приложение может зависнуть или прервать работу.

Замечание: Когда Вы устанавливаете значение параметра асинхронности в false, НЕ следует прописывать функцию обработки события onreadystatechange - просто разместите последующий код обработки ответа сразу после предложения send():

Пример

xmlhttp.open("GET","ajax_info.txt",false);
xmlhttp.send();
document.getElementById("myDiv").innerHTML=xmlhttp.responseText;

Попробуйте сами »




« Назад Далее »
© 2011-2019 Уроки JavaScript