Ajax to technika, która nadała nowy kierunek tworzeniu witryn i aplikacji na potrzeby sieci. Zgłębiając temat AJAX-a, będziesz miał okazję poznać nie tylko technologie składające się na to dosyć złożone rozwiązanie, ale i wiele pomocnych dodatków. Z naszego artykułu dowiesz się, jak dzięki bibliotece XAJAX szybko stworzyć interaktywną witrynę w oparciu o AJAX.
AJAX to nowatorska technika tworzenia interaktywnych
aplikacji internetowych, która
zadomowiła się na dobre w świecie internetu
zaledwie rok temu. Od tego czasu obserwujemy
masowy napływ nowych stron wykorzystujących tę
technikę. Czym jest zatem AJAX i kto go wymyślił?
AJAX to de facto nie nowa technologia, lecz
połączenie już istniejących narzędzi w taki sposób,
że razem tworzą nową jakość. Na AJAX zwrócono
pierwszy raz uwagę w momencie, gdy Google zaprezentowało
swoje nowatorskie serwisy. Wpierw
internauci odkryli możliwości Google Suggest
(http://www.google.com/webhp?complete=1&hl=en) – standardowego okna wyszukiwawczego
znanego z głównej strony Google, wzbogaconego
jednak o pewien dodatek.
W momencie
wprowadzania frazy do okna wyszukiwawczego,
użytkownik otrzymuje listę sugerowanych fraz
kluczowych, wraz z szacunkową ilością wyników,
których możemy się spodziewać. Wraz z upływem
czasu, Google prezentowało kolejne przykłady zastosowania
technik AJAX. Tym razem na znacznie
większą skalę.
Google Maps (http://maps.google.com/) to
z kolei internetowa usługa, która umożliwia odnajdywanie
lokalizacji na całym globie. Nie jest to
jednak zwykła mapa. Dzięki połączeniu zdjęć satelitarnych
i tradycyjnych map otrzymano zadziwiające
wręcz efekty. Mapy satelitarne są na tyle dokładne,
iż widać np. opalających się (w momencie robienia
zdjęć) ludzi na plaży w Barcelonie. Co więcej,
mapa jest w pełni interaktywna. To oznacza, że do
zmniejszenia skali czy przesunięcia jej w dowolnym
kierunku nie trzeba przeładowywać okna
przeglądarki.
GMail (http://www.gmail.com/) to kolejny produkt
ze stajni Google, który wykorzystuje w pełni
zalety techniki AJAX. Internetowy klient pocztowy
to w pełni interaktywna aplikacja. Rzuca się w oczy
łatwość obsługi, zupełnie jakby się miało do czynienia
z programem stacjonarnym zainstalowanym
na domowym komputerze.
Oczywiście Google to nie jedyna firma, która postanowiła
zainwestować w rozwój w tym kierunku.
Doskonale spisał się też gigant Yahoo! Inteligentnie
przemycił on techniki AJAX do serwisu Flickr (http://www.flickr.com), pozwalającego na zarządzanie
i udostępnianie kolekcji własnych zdjęć.
Wszystkie efekty, które obserwujemy na wymienionych
stronach, nazwane zostały technikami
AJAX. Nazwę AJAX wprowadził Jesse James
Garrett w swoim artykule \”Ajax: A New Approach
to Web Applications\” na łamach serwisu Adaptive
Path na początku 2005 roku. Jego artykuł zapoczątkował
ewolucję w kierunku tworzenia bardziej
interaktywnych stron WWW, choć nie miał on
żadnego wpływu na powstanie tej techniki.
AJAX, czyli asynchroniczny JavaScript i XML (ang.
Asynchronous JavaScript and XML), to tylko nazwa
określająca zastosowanie pewnej grupy technologii
w celu stworzenia aplikacji internetowej pracującej
po stronie przeglądarki, która do zmiany zawartości
nie wymaga przeładowania strony.
Grupa technologii, o których mowa, zawiera się
w poniższej liście:
- (X)HTML – struktura serwisu WWW,
- CSS – arkusz stylów niezbędny do uzyskania
pożądanego efektu wizualnego, - JavaScript/DOM – realizacja żądań po stronie
klienta, a także uzyskiwania dostępu do konkretnych
elementów dokumentu (X)HTML, - XML – protokół transportowy do wymiany
danych pomiędzy JavaScriptem a językiem
programowania pracującym po stronie serwera, - XMLHttpRequest – most łączący technologie po
stronie serwera z technologią funkcjonującą po
stronie klienta (JavaScript).
Do tej listy zmuszeni jesteśmy dodać jeszcze
język stojący po stronie serwera, który zadba o obsługę
wszystkich wymienionych technologii, czyli
realizację żądań po stronie serwera. Najczęściej
będzie to więc PHP, lecz równie dobrze można wykorzystać
JSP, Pythona, ASP.net czy będące ostatnio
na fali Ruby on Rails.
Jak to działa?
Strona WWW, która nie wykorzystuje mechanizmu
AJAX wysyła do serwera żądanie wyświetlenia
zawartości o podanym adresie URL. Jeżeli adres ten
reprezentowany jest przez stronę WWW, przeglądarka
internetowa oprócz pobrania dokumentu
HTML wysyła serię żądań o grafiki czy arkusze
stylów. W ten sposób w przeglądarce internetowej
wyświetlana jest zawartość strony. Ilustrację tego
mechanizmu przedstawia rys 1.
Na rys. 2 zaprezentowano
ten sam mechanizm, lecz przy dodatkowym
wykorzystaniu techniki AJAX. Jak można zauważyć,
po lewej stronie pojawia się dodatkowy moduł.
Naturalnie, początkowo wszystkie operacje są
analogiczne do typowej strony. Użytkownik żąda
witryny mieszczącej się pod konkretnym adresem
URL, w odpowiedzi otrzymując witrynę. Gdy zaś
podejmie on akcję kontrolowaną przez odpowiednio
przygotowany skrypt JavaScript, tenże wysyła
poprzez klasę XMLHttpRequest żądanie do serwera.
Ten proces ma miejsce bez wiedzy użytkownika
– to znaczy, że odbywa się on w tle aplikacji.
W wyniku otrzymania żądania, serwer przygotowuje
odpowiedź i odsyła ją do strony. Odpowiedź
jest przechwytywana przez klasę XMLHttpRequest
przetwarzana przez odpowiedni skrypt JS. Efektem
działania takiego żądania jest najczęściej przesłanie
określonego tekstu – np. informacji o zapisaniu
danych z formularza bądź wyświetlenie określonego
kodu HTML (zawierającego tekst, zdjęcia itp.).
W ten oto sposób pokrótce można przedstawić
zasadę działania AJAX. Jak widać, do działania
całego mechanizmu faktycznie konieczne staje się
wykorzystanie wielu technologii.
Aplikacje tworzone w oparciu o AJAX dzielą się,
ze względu na metodę obsługi żądań, na dwa typy:
- Synchroniczne – skrypt JavaScript odpowiedzialny
za obsługę mechanizmu wyświetla cyklicznie
określoną porcję informacji do serwera. Przykładem
zastosowania synchronicznego wywoływania są wszelkiego typu interaktywne edytory
tekstu czy arkusze kalkulacyjne. Dzięki wysyłaniu
zawartości wprowadzanego tekstu do serwera,
np. co 2 minuty, masz pewność, że twoje dane
nie zostaną utracone w wyniku zamknięcia
przeglądarki. Serwer otrzymując nową wersję
tekstu, może ją następnie bez przeszkód zapisać
do bazy danych. - Asynchroniczne – żądanie jest wykonywane po
określonej akcji. By nastąpiło zapisanie wprowadzonych
danych lub wyświetlenie pożądanej
zawartości, użytkownik musi najczęściej kliknąć
na określony odnośnik lub wybrać element z listy.
Zasady projektowania aplikacji interaktywnych
Projektowanie aplikacji przy użyciu techniki
AJAX wymaga rozwagi i umiejętnego wybierania
sytuacji, w których warto z niej skorzystać. Celem
stosowania AJAX-a jest zapewnienie użytkownikowi
lepszego interfejsu. Dodanie AJAX-a na siłę mija
się więc z celem. Doskonałym przykładem takiego
zachowania jest użycie AJAX-a do wyświetlania kolejnych
stron długiego artykułu. W takim przypadku
użytkownik nie odnosi praktycznie żadnej korzyści
dodatkowej korzyści, gdyż czas przejścia na inną
stronę będzie zbliżony do czasu oczekiwania na
pobranie danych przy użyciu AJAX-a.
Ponadto użycie
AJAX-a nie pozwala użytkownikowi na przejście do
strony poprzedniej przy korzystaniu z wbudowanych
w tym celu w przeglądarkę mechanizmów, takich
jak przycisk wstecz. Dodatkowo, wszystkie treści
wczytywane za pośrednictwem techniki AJAX nie
będą indeksowane przez wyszukiwarkę.
Trzeba więc pamiętać, że AJAX ma wady
i powinien być używany jako dodatek do istniejących
stron. I to taki, którego wyłączenie nie będzie
miało wpływu na działanie usługi. Trzeba bowiem
zdawać sobie sprawę, że AJAX nie może działać bez
wykorzystania JavaScriptu. Gdy więc użytkownik
wyłączy obsługę tego języka w przeglądarce, pojawi
się problem. Choć nie dotyczy on większości komputerów,
sytuacja komplikuje się przy urządzeniach
przenośnych (palmtopach, palmfonach i telefonach
komórkowych), gdzie obsługa JS albo jest bardzo
ograniczona, albo nie istnieje wcale.
Problem dostępności AJAX-a w przeglądarce
użytkownika można pominąć tylko wtedy, gdy
mamy do czynienia z witryną usługową, która
bez technik AJAX nie mogłaby istnieć (przykład to
Google Maps).
Biblioteki wspomagające
Problemem, który napotyka większość webmasterów
na początku przygody z AJAX-em, jest konieczność
napisania odpowiedniego kodu do obsługi
żądań. Ponieważ oprogramowanie pracuje po stronie
klienta, należy zadbać o poprawne funkcjonowanie
aplikacji na każdej platformie, czyli w praktyce na
najpopularniejszych internetowych przeglądarkach,
takich jak MSIE, Firefox czy Opera. Przed koniecznością
stworzenia rozlicznych skryptów JavaScript chroni
na szczęście możliwość wykorzystania gotowych
modułów do obsługi AJAX-a.
Biblioteki, które dostępne są w sieci, mogą być
w większości użytkowane bezpłatnie. Można je
podzielić, ze względu na nacisk, jaki położono na
programowanie w danym języku, na zorientowane
na: język programowania stojący po stronie serwera,
np. PHP oraz JavaScript, czyli język pracujący po
stronie klienta.
W praktyce układ, w którym nacisk położono
na PHP, wymaga od użytkownika większego
wkładu przy pisaniu skryptów po stronie serwera.
Programowanie w JavaScripcie ograniczone jest
wówczas do minimum.
Biblioteka, z której będziemy korzystać w tym
artykule, to rozwiązanie kładące nacisk na programowanie
PHP. Dlatego też może śmiało pokusić się
o miano jednej z tych, które można bardzo szybko
opanować do perfekcji.
XAJAX
XAJAX to biblioteka udostępniana w formie
dwóch klas PHP oraz jednej JavaScript. Jest ona
udostępniania za darmo jako open source, na
licencji LGPL. Strona projektu, dostępna pod
adresem http://www.xajaxproject.org, zawiera
wszystkie informacje potrzebne do startu oraz
dokumentację techniczną projektu.
Działanie XAJAX jest asynchroniczne i skoncentrowane
wokół PHP. To tutaj programista skupia
najwięcej uwagi. Skrypty JavaScript konieczne do
obsługi żądań są generowane przez bibliotekę
XAJAX, tak by programista nie musiał przejmować
się obsługą oprogramowania po stronie klienta.
XAJAX ma szereg zalet, z których najważniejsze to:
- szybkie i przejrzyste programowanie nowych
funkcji bez zaśmiecania kodu aplikacji, - łatwa integracja z istniejącymi witrynami internetowymi,
szablonami, - zorientowana obiektowo budowa, ułatwiająca
wdrożenie i integrację z bardziej rozbudowanymi
aplikacjami internetowymi, - specjalny mechanizm obsługi formularzy, który
ułatwia ich przetwarzanie, - możliwość zwracania samouruchamiających się
skryptów JavaScript, jak odpowiedzi na żądanie
serwera, - specjalny system debugowania ułatwiający
odnajdywanie i usuwanie błędów na etapie
produkcyjnym, - możliwość łatwej i szybkiej podmiany dowolnych
elementów posiadających swój identyfikator
dzięki dobremu wsparciu DOM.
Instalacja
i zawartość pakietu AJAX
Aby przystąpić do instalacji, pobierz spakowane
archiwum ze skryptami, w którym znajdziesz:
- {stala}examples{/stala} – cztery przykłady pokazujące możliwości
biblioteki XAJAX, - {stala}tests{/stala} – przykładowe testy sprawdzające, czy
biblioteka działa w pełni prawidłowo, - {stala}xajax_js{/stala} – katalog zawierający bibliotekę xajax.
js odpowiedzialną za obsługę żądań po stronie
klienta w formie skompresowanej (pozbawionej
nieistotnych znaków); w katalogu zamieszczono
również wersję nieskompresowaną – przydatna
przy nanoszeniu zmian, - {stala}xajax.inc.php{/stala} – główna biblioteka XAJAX odpowiedzialna
za obsługę wszystkich żądań do serwera, - {stala}xajaxCompress.php{/stala} – skrypt służy do usunięcia
nieistotnych znaków z umieszczanego po stronie
serwera skryptu JavaScript, tak aby zajmował
jak najmniej miejsca, - {stala}xajaxResponse.inc.php{/stala} – biblioteka odpowiada
za przesłanie odpowiedzi do przeglądarki.
Instalacja polega wyłącznie na przekopiowaniu
trzech istotnych plików. Posłuż się praktycznymi
przykładami, umieszczając plik {stala}xajax.js{/stala} w katalogu
js, a następnie przegrywając biblioteki {stala}xajax.inc.php{/stala}
i {stala}xajaxResponse.inc.php{/stala} do katalogu lib.
Do sprawnej pracy biblioteka wymaga wykorzystania
serwera WWW z rodziny Apache lub IIS,
a także PHP 4.3.x lub nowszego. Aplikacje oparte
o XAJAX funkcjonują poprawnie w przeglądarkach
IE 5.5, Firefox 1.0, Safari 1.3, Opera 8.5 oraz ich
nowszych wersjach.
Aby móc dalej kontynuować, powinieneś wcześniej
poznać dostępne w bibliotece klasy:
{stala}xajax.inc.php{/stala}:
- {stala}debugOn()/debugOff(){/stala} – włącza/wyłącza tryb
usuwania błędów, - {stala}registerFunction($nazwaFunkcji)/registerFunction(
array($nazwaFunkcji, $nazwaKlasy, $nazwa-
Metody){/stala}) – rejestruje funkcję PHP, do której
będzie można odwołać się poprzez JavaScript, - {stala}processRequests(){/stala} – uruchamia silnik odpowiedzialny
za obsługę przychodzących wywołań, - {stala}printJavascript()/getJavascript{/stala} – wyświetla/zwraca
nagłówkowy kod JavaScript.
xajaxResponse.inc.php:
- {stala}addAssign($idElementu, $atrybut, $dane){/stala}
– zmiana zawartości elementu XHTML o ID
równym $idElementu, - {stala}addScript($kodJs){/stala} – uruchomienie kodu Java-
Script umieszczonego w zmiennej $kodJs, - {stala}getXML(){/stala} – zwrócenie odpowiedzi w formacie
XML do przeglądarki użytkownika.
xajax.js:
- {stala}xajax_NazwaFunkcji($p1, $p2,…){/stala} – wywołanie
zarejestrowanej w PHP funkcji o nazwie Nazwa-Funkcji, przy czym przekazuje się parametry $p1,
$p2,…. - {stala}xajax.getFormValues($idFormularza){/stala} – pobranie
danych, które użytkownik wpisał do formularza
o ID $idFormularza.
Podstawianie tekstu
Pierwszy przykład ma za zadanie wdrożyć cię
w pracę z XAJAX-em. Zadaniem pierwszej aplikacji
opartej o AJAX będzie pobranie i wyświetlenie
odpowiedniego tekstu, tak jak pokazano na rys. 3.
Użytkownik ma do dyspozycji listę rozwijalną,
z której wybiera temat. Po wybraniu elementu
następuje przekazanie wywołania do XAJAX-a,
który pobiera odpowiedni tekst i zwraca go do
użytkownika.
Powyższy przykład może być rozbudowany
tak, by stworzyć system zakładek. Wybór
zakładki powoduje załadowanie odpowiedniego
kodu HTML, zawierającego tekst i grafikę.
Rozpocznijmy od stworzenia odpowiedniego
szablonu strony:
=$xajax->printJavascript()?>
Proszę wybrać, który tekst z listy mam załadować
Obowiązkowo w sekcji head należy umieścić
wywołanie metody {stala}printJavascript(){/stala}, która
odpowiada za przygotowanie i załączenie do kodu
źródłowego odpowiedniego kodu odpowiedzialnego
za przechwytywanie żądań. Kolejno tworzymy
formularz, nadając mu identyfikator form.
Do
elementu select przypisujemy akcję. Musi ona zawierać
nazwę funkcji PHP, która zrealizuje żądanie
(tutaj jest to form), a także wywołanie funkcji,
która pobierze dane uzyskane w wyniku wypełnienia
formularza o określonym id (tutaj form).
Przed plikiem szablonu należy umieścić kod
PHP, który obsłuży całą aplikację:
addAssign(\"tekst\",\"innerHTML\", $tekst[$d[\'tekst\']]);
return $objResponse->getXML();
}
$xajax = new xajax();
$xajax->registerFunction(\'form\');
$xajax->processRequests();
?>
Stała XAJAX_DEFAULT_CHAR_ENCODING
określa kodowanie znaków przy przekazywaniu
danych tekstowych z powrotem do przeglądarki
użytkownika. Kolejno dołączamy główną bibliotekę
– biblioteka xajaxResponse jest dołączana automatycznie
i powinna znajdować się w tym samym
katalogu, co biblioteka główna.
Następnie tworzymy funkcję, która zostanie
wywołana przez skrypt w momencie przekazania
żądania na stronę serwera. Musi ona nosić tę samą
nazwę, jak funkcja zadeklarowana w szablonie.
Parametr przekazywany od tej funkcji to dane
z formularza w formie tablicy asocjacyjnej. Kolejne
elementy tablicy {stala}$test[]{/stala} to nasza zawartość. W tym
miejscu można więc posłużyć się bazą danych.
Tworzymy instancję obiektu xajaxResponse
odpowiedzialnego za zwrócenie rezultatu. Metoda
{stala}addAssign{/stala} dokona zmiany zawartości elementu
o id tekst na tę wskazywaną przez zmienną
{stala}$tekst[$d[\’tekst\’]]{/stala}. W rezultacie tekst z kontenera
tekst zostanie podmieniony na odpowiedni element
tablicy {stala}$tekst[]{/stala}.
Do wygenerowania i wysłania odpowiedniego
kodu zwrotnego w postaci zakodowanego XML-a wykorzystujemy
metodę {stala}getXML(){/stala}. Przechodzimy do ciała programu, gdzie znajduje się instancja głównej
klasy XAJAX, metoda {stala}registerFunction{/stala} odpowiedzialna
za rejestrację nowej funkcji w PHP. Skrypt zamyka
metoda {stala}processRequests(){/stala}, przekazująca sterowanie
do wewnętrznych procesów biblioteki, odpowiedzialnych
za przetworzenie danych wejściowych.
Mechanizm \”Google Suggest\”
Kolejnym zaprezentowanym programem będzie
aplikacja AJAX zbliżona swoją funkcjonalnością do
Google Suggest. Jej zadaniem będzie zasugerowanie
użytkownikowi marki pojazdu w momencie
wprowadzania frazy do okna wyszukiwawczego.
printJavascript(); ?>
Szablon odpowiedzialny za wyświetlanie
sugerowanych fraz jest zbliżony do tego z poprzedniego
przykładu, stąd pominiemy jego omawianie.
Przejdźmy zatem do obsługi formularza, czyli
aktywnej części programu:
\'.$brand.\'\';
}
}
$objResponse = new xajaxResponse();
if(strlen($outstring) > 0) {
$outstring = \'
- \'.$outstring.\'
Do tablicy {stala}$brands[]{/stala} trafiają określone marki
samochodów. Tworzymy funkcję suggest zbierającą
dane z formularza do tablicy $data. Zmienna
{stala}$outstring{/stala} odpowiada za zebranie wszystkich
danych, które zostaną na samym końcu przesłane
do użytkownika.
Aby przygotować niezbędne sugestie, konieczna
jest funkcja, która przejdzie przez wszystkie
elementy zbioru {stala}$brands{/stala} i skonfrontuje je z tym, co aktualnie wpisano w formularz wyszukiwania.
Jeżeli formularz jest pusty, żadne sugestie nie
zostaną poczynione. Jeżeli zaś wprowadzona fraza
i marka samochodu zaczynają się od tych samych
liter, dodajemy odnośnik z propozycją.
Odnośnik
ten zawiera krótki fragment kodu JavaScript,
którego zadaniem jest przekopiowanie kompletnej
marki samochodu do okna wyszukiwawczego,
a następnie usunięcie okna sugestii, gdyż nie
jest ono już potrzebne.
Przygotowujemy więc
ostateczne dane wyjściowe. Jeżeli istnieje wartość
sugerowana, długość zmiennej {stala}$outstring{/stala} decyduje
o wyświetleniu bloku z sugestiami. Metoda {stala}addScript{/stala} wykonuje polecenie JavaScript i albo ukrywa
kontener suggests, albo go pokazuje. Następuje
przekazanie wyników do przeglądarki w celu ich
wyświetlenia (rys. 4).
System logowania
Każda strona, której używanie wymaga zalogowania
się, posiada formularz, gdzie użytkownik
wprowadza swój login (obecnie najczęściej jest
to e-mail) i hasło. Aby przyspieszyć obsługę
formularza i szybko poinformować o błędach we
wprowadzonym haśle, stosuje się technikę AJAX.
Skrypt jest na tyle przemyślany, że w przypadku
wyłączenia obsługi JavaScript wciąż nie będzie
problemów z obsługą formularza, tyle że proces
będzie odbywał się z tradycyjnym przeładowaniem.
Szablon gotowy do użycia, widoczny na rys.
5, prezentuje się nastepująco:
=$xajax->printJavascript()?>
Szablon zawiera formularz, który w momencie
próby wysłania przekazuje akcję do funkcji loginform.
Gdy formularz jest wypełniony prawidłowo,
akcja jest przekazywana do skryptu z parametrem
{stala}?wszystko_ok_loguj{/stala}, gdzie należy przypisać
użytkownikowi sesję (sprawdzając dodatkowo
ponownie hasło). Do czasu, gdy formularz nie zostanie
wypełniony poprawnie, wszystkie operacje
odbywają się bez przeładowania strony.
Logowanie...\';
$objResponse->addScript(\'document.loginform.submit();\');
}
}
}
}
$objResponse->addAssign(\"logblad\",\"innerHTML\", $out);
return $objResponse->getXML();
}
$xajax = new xajax();
$xajax->registerFunction(\'loginform\');$xajax->processRequests();
?>
Ze względu na oszczędność miejsca, tablica
$data zawiera przykładowe informacje o istniejących
kontach, pobrane z bazy danych. Wprowadzenie
danych w postaci: login = moj@email.
pl, hasło = mojehaslo powoduje, że skrypt
przepuszcza użytkownika. Następuje przekazanie
akcji do parametru {stala}?wszystko_ok_loguj{/stala}.
Skrypt
jest zdominowany przez wiele instrukcji warunkowych,
które odpowiadają za kolejne sprawdzenia
i wyświetlają odpowiednie błędy. Jeżeli dane do
logowania podano poprawnie, uruchamiany jest
skrypt JavaScript, który wysyła formularz.
Podsumowanie
Projektowanie interaktywnych witryn i aplikacji
internetowych to zadanie, które wymaga wiedzy
i odpowiednich narzędzi. Zaprezentowana w tym
artykule biblioteka XAJAX jest przykładem dobrze
zaprojektowanego narzędzia, które posłuży niejednemu
programiście do osiągnięcia pożądanego
efektu niskim nakładem sił i środków.
Warto pamiętać, że wykorzystanie technik
AJAX w istocie rzeczy obniża ruch na stronie.
Mniejsza ilość transferowanych danych to może
być czynnik niezauważalny w przypadku niewielkich
witryny. Jednak już w przypadku rozbudowanych
wortali, każda oszczędność polegająca na
ograniczeniu transferu jest od razu widoczna na
rachunkach za usługi hostingowe.
AJAX w sieci
1. http://www.ajaxian.com –
największe w sieci źródło nowości o technikach
AJAX,
2. http://ajaxin.pl –
blog poświęcony nowinkom w technikach
AJAX, po polsku,
3. http://ajaxpatterns.org –
wiki poświęcone technikom AJAX,
4. http://www.xajaxproject.org –
strona główna biblioteki XAJAX.
Wykorzystują AJAX
Google Suggest – podpowiadanie fraz wyszukiwawczych
w momencie wprowadzania zapytania do okna
GMail – klient poczty elektronicznej pracuje niczym
tradycyjne aplikacje okienkowe
Przykład Google Maps pokazuje, jak technologia
może zawładnąć całym światem
Flickr – przykład strony do udostępniania zdjęć
z możliwością ich dynamicznej obróbki