JavaScript свойство XMLHttpRequest.onreadystatechange
JavaScript XMLHttpRequestОпределение и применение
JavaScript свойство onreadystatechange объекта XMLHttpRequest содержит обработчик событий, вызываемый при запуске события readystatechange, то есть при каждом изменении свойства readyState объекта XMLHttpRequest.
Обращаю Ваше внимание на то, что cобытиеreadystatechange не произойдёт если запрос XMLHttpRequest отменён с использованием метода abort().
Поддержка браузерами
Свойство | Chrome | Firefox | Opera | Safari | IExplorer | Edge |
---|---|---|---|---|---|---|
onreadystatechange | Да | Да | Да | Да | Да | Да |
JavaScript синтаксис:
XMLHttpRequest.onreadystatechange = callback; callback - Function
Cпецификация
XMLHttpRequestПример использования
<!DOCTYPE html> <html> <head> <title>Использование JavaScript методов open() и send() объекта XMLHttpRequest</title> </head> <body> <button onclick = "getPhone()">Запросить телефон</button> <!-- добавляем атрибут событий onclick --> <div id = "demo"></div> <script> function getPhone() { let xhr = new XMLHttpRequest(); // инициализируем переменную новым объектом XMLHttpRequest xhr.open("GET", "user.json"); // определяем параметры для запроса xhr.send(); // отправляем запрос на сервер xhr.onreadystatechange = function() { // проверяем состояние запроса и числовой код состояния HTTP ответа if (this.readyState == 4 && this.status == 200) { const data = JSON.parse(this.responseText); // анализируем строку в формате JSON и инициализируем переменную значением, полученным в ходе анализа document.getElementById("demo").innerHTML = "Телефон пользователя: " + data.phone; // находим элемент по id и изменяем его содержимое значением ключа объекта, содержащегося в переменной } }; } </script> </body> </html>
В этом примере с использованием атрибута событий onclick при нажатии на кнопку (HTML элемент <button>) вызываем функцию getPhone, которая:
- Вызывает конструктор объекта XMLHttpRequest и инициализирует переменную новым объектом этого типа.
- С помощью метода open() объекта XMLHttpRequest определяем параметры для запроса - указываем, что HTTP запрос будет осуществлен методом "GET", а в качестве URL адреса на который будет отправлен запрос мы задаем файл формата json. Обратите внимание, что файл размещен на том же сервере и в том же каталоге, что и документ с которого выполняется скрипт. Файл имеет следующий вид:
{ "firstName": "Василий", "lastName": "Джейсонов", "age": 25, "phone": 88005553535 }
- С помощью метода send() объекта XMLHttpRequest отправляем запрос на сервер.
- С использованием обработчика событий onreadystatechange, вызываемого при запуске события readystatechange, то есть при каждом изменении свойства readyState объекта XMLHttpRequest мы вызываем функцию, которая проверяет состояние запроса, оно должно соответствовать значению 4 (операция полностью завершена) и числовой код состояния HTTP ответа (свойство status) должен соответствовать значению 200 (успешный запрос). Если условия выполнены, то с использованием метода JSON.parse() анализируем строку в формате JSON и инициализируем переменную значением, полученным в ходе анализа. После этого с помощью метода getElementById() находим элемент с определенным глобальным атрибутом id и изменяем его содержимое значением ключа объекта, содержащегося в инициализированной ранее переменной.
Результат нашего примера:
JavaScript XMLHttpRequest