|
Асинхронная передача - Да или Нет?
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; |
Попробуйте сами »
|
|
|