XMLHttpRequestОбъект
С помощью объекта XMLHttpRequest можно обновить часть веб-страницы без перезагрузки всей страницы.
Объект XMLHttpRequest
Объект XMLHttpRequest используется для обмена данными с сервером в фоновом режиме.
The XMLHttpRequest object isмечта разработчика, потому что вы можете:
- Обновление веб-страницы без перезагрузки страницы
- Запрос данных с сервера после загрузки страницы
- Получение данных с сервера после загрузки страницы
- Отправлять данные на сервер в фоновом режиме
Создать объект XMLHttpRequest
Все современные браузеры (IE7+, Firefox, Chrome, Safari и Opera) имеют встроенный объект XMLHttpRequest.
Синтаксис создания объекта XMLHttpRequest
Старые версии Internet Explorer(IE5 и IE6)используют объект ActiveX:
Чтобы обеспечить работу во всех современных браузерах, включая IE5 и IE6, проверьте, поддерживает ли браузер объект XMLHttpRequest. Если поддерживает, создайте объект XMLHttpRequest; если нет — создайте объект ActiveX:
Пример
Попробуйте сами »
Отправка запроса на сервер
Чтобы отправить запрос на сервер, мы используем методы open() и send() объекта XMLHttpRequest:
xmlhttp.send();
| Методы | Описание |
|---|---|
| open(method,url,async) | Определяет тип запроса, URL и то, должен ли запрос обрабатываться асинхронно. method: Тип запроса: GET или POST url: Расположение файла на сервере async: true (асинхронный) или false (синхронный) |
| send(string) | Отправьте запрос на сервер. string: только для POST-запросов |
GET или POST?
GET проще и быстрее, чем POST, и может использоваться в большинстве случаев.
Однако всегда используйте POST-запросы в следующих случаях:
- Кэшированные файлы не подходят (обновление файлов или базы данных на сервере)
- На сервер отправляется большой объем данных (POST не имеет ограничения по размеру)
- При отправке пользовательского ввода (который может содержать неизвестные символы) POST мощнее и безопаснее, чем GET
URL — файл на сервере
Параметр url метода open() — это адрес файла на сервере:
Файл может быть любого типа (например, .txt и .xml) или серверным скриптовым файлом (например, .html и .php, которые могут выполнять действия на сервере перед отправкой ответа).
Асинхронность — True или False?
Чтобы отправить запрос асинхронно, параметр async метода open() должен быть установлен в true:
Отправка асинхронных запросов — огромное улучшение для веб-разработчиков. Многие задачи, выполняемые на сервере, отнимают много времени.
Отправляя запросы асинхронно, JavaScript не должен ждать ответа сервера, а может вместо этого:
- Выполнять другие скрипты, пока ожидается ответ сервера
- Обрабатывать ответ, когда он будет готов
Async=true
При использовании async=true укажите функцию, которая будет выполнена, когда ответ будет готов, в событии onreadystatechange:
Пример
Попробуйте сами »
Async=false
Чтобы использовать async=false, измените третий параметр метода open() на false:
Не рекомендуется использовать async=false, но это допустимо для обработки нескольких небольших запросов.
Помните, что JavaScript не продолжит выполнение, пока ответ сервера не будет готов. Если сервер занят или медленно отвечает, приложение зависнет или остановится.
Примечание:Когда вы используете async=false, не пишите функцию onreadystatechange - просто поместите код после инструкции send():
Пример
Попробуйте сами »
Ответ сервера
Чтобы получить ответ от сервера, используйте свойство responseText или responseXML объекта XMLHttpRequest.
| Свойство | Описание |
|---|---|
| responseText | Получите данные ответа в виде строки |
| responseXML | Свойство responseXML возвращает объект XML-документа, который можно исследовать и разбирать с помощью методов и свойств дерева узлов DOM. |
Свойство responseText
Если ответ от сервера не является XML, используйте свойство responseText.
Свойство responseText возвращает ответ в виде строки, и вы можете использовать его соответствующим образом:
Свойство responseXML
Если ответ от сервера является XML, и вы хотите разобрать его как объект XML, используйте свойство responseXML:
Пример
Запросить файли разобрать ответ:
Попробуйте сами »
событие onreadystatechange
Когда запрос отправляется на сервер, мы хотим выполнить некоторые действия на основе ответа.
Событие onreadystatechange срабатывает всякий раз, когда изменяется readyState.
Свойство readyState содержит статус XMLHttpRequest.
Три важных свойства объекта XMLHttpRequest:
| Свойство | Описание |
|---|---|
| onreadystatechange | Хранит функцию (или имя функции), которая будет автоматически вызываться каждый раз при изменении свойства readyState |
| readyState | Содержит статус XMLHttpRequest. Изменяется от 0 до 4: 0: Запрос не инициализирован 1: Соединение с сервером установлено 2: Запрос получен 3: Обработка запроса 4: Запрос завершён, ответ готов |
| status | 200:"OK" 404: Страница не найдена |
В событии onreadystatechange мы указываем, что произойдёт, когда ответ сервера будет готов к обработке.
Когда readyState равен 4 или status равен 200, ответ готов:
Пример
Попробуйте сами »
Примечание:Событие onreadystatechange срабатывает каждый раз при изменении readyState и срабатывает всего четыре раза.
Другие примеры
Получить информацию о заголовках с помощью getAllResponseHeaders()
Получить информацию заголовка ресурса (файла).
Получить указанную информацию заголовка с помощью getResponseHeader().
Извлекает указанную информацию заголовка из ресурса (файла).
Как веб-страница взаимодействует с веб-сервером, когда пользователь вводит символы в поле ввода.
Как веб-страница извлекает информацию из базы данных с помощью объекта XMLHttpRequest.
Создать XMLHttpRequest для получения данных из XML-файла и отображения данных в HTML-таблице.
Другие расширения