Привет, дорогой читатель. В этой статье я расскажу тебе о том, что такое ajax и с чем его едят.Ajax(Asynchronous Javascript And Xml)- технология для взаимодействия с сервером без перезагрузки страниц. Преимущество ajax в том, что при его использование можно изменить часть web страницы, не перезагружая всю страницу целиком, а только лишь нужную нам часть. Сейчас мы рассмотрим простой пример использования ajax.
Создадим файл "ajax.html", в него вставим этот html код:
1 2 3 4 5 6 7 8 9 |
<html> <head> <title>Пример асинхронной передачи данных</title> </head> <body> <input value="Сколько время?" onclick="now_time()" type="button"> <div id="time">Здесь будет ответ сервера </body> </html> |
Теперь рассмотрим данный html код.
При нажатие на кнопку "сколько время?" будет вызвана java script функция now_time(). Функция пошлет запрос на сервер, сервер обработает запрос и вышлет нам ответ в div time.
Теперь мы рассмотрим саму функцию now_time():
Во-первых, для асинхронного обмена данными мы будем использовать специальный объект XmlHttpRequest, который умеет отправлять запрос и получать ответ от сервера.
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 |
function getXmlHttp(){ var xmlhttp; try { xmlhttp = new ActiveXObject("Msxml2.XMLHTTP"); } catch (e) { try { xmlhttp = new ActiveXObject("Microsoft.XMLHTTP"); } catch (E) { xmlhttp = false; } } if (!xmlhttp && typeof XMLHttpRequest!='undefined') { xmlhttp = new XMLHttpRequest(); } return xmlhttp; } |
Подробно про этот объект вы можете прочитать тут.
А теперь про саму функцию now_time():
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 |
function now_time() { var req = getXmlHttp() // создадим объект для запроса к серверу var statusElem = document.getElementById('time') // id div`a в котором будет отображатся ход выполнения скрипта req.onreadystatechange = function() { // onreadystatechange - активируется при получении ответа сервера if (req.readyState == 4) { // если запрос закончил выполняться statusElem.innerHTML = req.statusText // показать статус (Not Found, ОК..) if(req.status == 200) { // если статус 200 - выдать ответ пользователю alert("Ответ сервера: "+req.responseText); // выдаем ответ } } } req.open('GET', '/time.php', true); // задаем адрес подключения скрипта /* объект запроса подготовлен: указан адрес и создана функция onreadystatechange для обработки ответа сервера */ req.send(null); // отослать запрос statusElem.innerHTML = 'Ожидаю ответа сервера...' } |
Серверный обработчик, к которому обратился наш ajax-запрос (в примере это time.php), по сути, ничем не отличается от обычной php страницы.
Теперь мы перейдем к файлу time.php
1 2 3 4 5 6 7 |
<?php sleep(2); setlocale(LC_TIME, 'ru_RU.CP1251', 'rus_RUS.CP1251', 'Russian_Russia.1251'); $time = strftime("%H:%M:%S\n"); $unix_time = time(); echo "<p>Человеческое время: $time <br> Unix время: $unix_time<p></p>"; ?> |