Аякс за 30 секунд
28 Nov, 2005Перевожу заметку с которой я начал свое знакомство с аяксом.
Находится на сайте Rasmus'a - Rasmus' 30 second AJAX Tutorial.
Мой вольный перевод.
Вообще сам Аякс я считаю немного обманом. Многие использовали те же самые приемы задолго до того как они вдруг стали "Аяксом". И эти вещи совсем не такие сложные как многие считают. Вот простой пример из одного из моих приложений.
Сначала Javascript:
function createRequestObject() { var ro; var browser = navigator.appName; if(browser == 'Microsoft Internet Explorer'){ ro = new ActiveXObject('Microsoft.XMLHTTP'); }else{ ro = new XMLHttpRequest(); } return ro; } var http = createRequestObject(); function sndReq(action) { http.open('get', 'rpc.php?action='+action); http.onreadystatechange = handleResponse; http.send(null); } function handleResponse() { if(http.readyState == 4){ var response = http.responseText; var update = new Array(); if(response.indexOf('|' != -1)) { update = response.split('|'); document.getElementById(update[0]).innerHTML = update[1]; } } }
Этот код создает обьект запроса, сам запрос и функцию для его принятия и распарсивания(по названиям, собственно, нетрудно догадаться). Для использования вам нужно включить этот скрипт в вашу страницу. (<script type="text/javascript" src="js.js"></script>
)
Теперь для того чтобы послать запрос нужно его прицепить к какому-нибудь событию. Например onclick или поместив прямо в href вот так:
- <a href="javascript:sndReq('foo')">[foo]</a>
В rpc.php у вас может быть примерно такой код:
- switch($_REQUEST['action']) {
- case 'foo': /*...action=foo...*/
- /* тут например запрос к базе*/
- echo "foo|foo done";
- break;
- ...
- }
- <div id="foo">
- </div>
- <div id="foo">
- foo done
- </div>
Обобщить этот подход, например для отсылки нескольких переменных, было бы очень просто, примерно так:
- function sndReqArg(action,arg) {
- http.open('get', 'rpc.php?action='+action+'&arg='+arg);
- http.onreadystatechange = handleResponse;
- http.send(null);
- }
А функцию handleResponse можно легко расширить для более интересных целей, чем просто замещение содержимого ДИВа.
Автор - Rasmus
В конце
Вот такая вот статейка. На ее базе мне например хватило 2Кб скрипта для создания вот такой вот фичи для укр.нета (исходники). Не без помощи CB правда. :) Джаваскриптер из меня все же слабенький. Прошу прощения за местами косноязычный перевод - я старался :). Считаю это одним из лучших тюториалов для начала работы с аяксом.Хотя бы потому, что лично мне претит использовать все эти навороченные библиотеки. Это как использовать сложную ЦМС для сайта с 3 статическими страницами. Такие вот ассоциации. И это не говоря о пушках и воробьях.
Ваше мнение по поводу тюториала приветствуется!
header
, например: header("Content-type: text/html; charset=UTF-8");