Объект XMLHttpRequest используется для обмена данными с сервером.
Для отправки запроса на сервер мы используем методы open() и send() объекта XMLHttpRequest:
xmlhttp.open("GET","ajax_info.txt",true);xmlhttp.send();
метод | описывать |
---|---|
открыть ( метод , URL , асинхронный ) | Указывает тип запроса, URL-адрес и необходимость асинхронной обработки запроса. метод : тип запроса GET или POST; URL : расположение файла на сервере. async : true (асинхронный) или false (синхронный) |
отправить ( строка ) | Отправьте запрос на сервер. строка : используется только для запросов POST. |
GET проще и быстрее, чем POST, и работает в большинстве ситуаций.
Однако используйте POST-запросы в следующих ситуациях:
Невозможно использовать кэшированные файлы (обновление файлов или баз данных на сервере)
Отправлять большие объемы данных на сервер (POST не имеет ограничения на размер данных)
POST более стабилен и надежен, чем GET, при отправке пользовательского ввода, содержащего неизвестные символы.
Простой GET-запрос:
В приведенном выше примере вы можете получать кэшированные результаты.
Чтобы этого избежать, добавьте в URL-адрес уникальный идентификатор:
Если вы хотите отправить информацию с помощью метода GET, добавьте информацию в URL-адрес:
Простой POST-запрос:
Если вам нужны данные POST, такие как форма HTML, используйте setRequestHeader() для добавления заголовков HTTP. Затем укажите данные, которые вы хотите отправить, в методе send():
метод | описывать |
---|---|
setRequestHeader( заголовок,значение ) | Добавьте в запрос HTTP-заголовки. заголовок : указывает имя заголовка значение : указывает значение заголовка |
Параметр url метода open() — это адрес файла на сервере:
xmlhttp.open("GET","ajax_test.html",true);
Это может быть файл любого типа, например .txt и .xml, или файл серверного сценария, например .asp и .php (который может выполнять задачи на сервере перед отправкой ответа обратно).
AJAX относится к асинхронному JavaScript и XML.
Если объект XMLHttpRequest будет использоваться для AJAX, параметр async его метода open() должен быть установлен в значение true:
xmlhttp.open("GET","ajax_test.html",true);
Для веб-разработчиков отправка асинхронных запросов — огромное улучшение. Многие задачи, выполняемые на сервере, занимают довольно много времени. До появления AJAX это могло привести к зависанию или остановке приложения.
При использовании AJAX JavaScript не нужно ждать ответа от сервера, а вместо этого:
Выполнять другие скрипты, ожидая ответа сервера.
Обработать ответ, когда он будет готов
При использовании async=true укажите функцию, которая будет выполняться в ответ на состояние готовности, в событии onreadystatechange:
Вы узнаете больше об onreadystatechange в следующей главе.
Если вы хотите использовать async=false, измените третий параметр метода open() на false:
xmlhttp.open("GET","test1.txt",false);
Мы не рекомендуем использовать async=false, но для некоторых небольших запросов это возможно.
Помните, что JavaScript ждет, пока ответ сервера не будет готов, прежде чем продолжить. Если сервер занят или работает медленно, приложение зависает или останавливается.
Примечание. Когда вы используете async=false, не пишите функцию onreadystatechange — просто поместите код после оператора send():