Académique Documents
Professionnel Documents
Culture Documents
PRZYKADOWY ROZDZIA
SPIS TRECI
KATALOG KSIEK
KATALOG ONLINE
ZAMW DRUKOWANY KATALOG
TWJ KOSZYK
DODAJ DO KOSZYKA
CENNIK I INFORMACJE
ZAMW INFORMACJE
O NOWOCIACH
ZAMW CENNIK
CZYTELNIA
FRAGMENTY KSIEK ONLINE
Wydawnictwo Helion
ul. Kociuszki 1c
44-100 Gliwice
tel. 032 230 98 63
e-mail: helion@helion.pl
Spis treci
O autorach
O recenzentach
Przedmowa
11
17
19
20
20
21
22
23
24
25
29
41
43
44
48
52
55
58
59
64
67
74
79
83
84
Spis treci
85
86
93
102
109
115
127
127
130
131
136
148
149
150
153
175
177
177
178
179
199
201
202
202
203
227
229
230
245
247
248
270
271
271
272
273
274
286
Spis treci
Skorowidz
287
287
288
288
289
305
307
308
308
310
311
313
313
313
314
315
316
319
1
Technologia AJAX
a przyszo aplikacji
internetowych
Mj may kuzyn zwrci si do pierwszego widzianego w swoim yciu komputera z takimi
sowami: Komputerze, narysuj robota!. (Komputer nie przyj tej komendy, poniewa dosta
ode mnie cise instrukcje, by nie sucha nieznajomych). Jeli mylisz podobnie do mnie, to
pierwsz Twoj myl bdzie jakie to gupie lub jakie to zabawne ale to bd. Nasze
wyedukowane i wymodelowane mzgi opanoway do pewnego stopnia sztuk porozumiewania
si z komputerem. Ludzi szkoli si, aby dostosowywali si do komputerw, aby kompensowali
nieumiejtno maszyny do pojmowania ludzkiego sposobu mylenia. (Z drugiej strony, ludzie
nie przystosowuj si zbyt dobrze, ale to ju inna historia).
Ta anegdotka bardzo dobrze pokazuje podejcie wikszoci ludzi do pracy na komputerze.
W idealnym wiecie taka ustna komenda wystarczyaby, aby komputer podj prac, co z kolei
zadowolioby mojego maego kuzyna. Chocia rozwijajca si technologia jest coraz bardziej
przyjazna uytkownikowi, to nadal prawdziwie inteligentne maszyny znajduj si daleko poza
naszym zasigiem. Do czasu, gdy uda si nam takie skonstruowa, ludzie, wic rwnie Ty, s
skazani na mudn nauk pracy z komputerem. Niektrzy uytkownicy do tego stopnia powicaj si tej pasji, e kocz jako fanatycy czarnego ekranu z migajcym w linii komend
malekim znakiem zachty.
Nieprzypadkowo nawyki, ktre wikszo z nas wyksztaca w czasie pracy na komputerze,
powstaj podczas pracy z oprogramowaniem posiadajcym intuicyjny (oczywicie dla czowieka) interfejs. Std zapewne bierze si zawrotna kariera prawego przycisku myszy, fenomen
funkcji przecignij i upu czy malekiego okienka tekstowego, ktre potrafi przeszuka dla
18
Stworzenie przyjaznego programu byo zawsze prostsze, jeli chodzio o aplikacj biurow,
a nie internetow, gwnie dlatego, e internet by pomylany jako nonik tekstu i grafiki, a nie
kompleksowych rozwiza. Ten problem da si szczeglnie odczu w cigu kilku minionych
lat, kiedy to zaczo si pojawia coraz wicej rozwiza programowych dostarczanych przez
internet.
W rezultacie rozwino si wiele technologii (ktre nadal ewoluuj), majcych upikszy,
usprawni i uprzystpni aplikacje internetowe. Jako przykady mona tu poda aplety Java
i aplikacje Macromedia Flash. Wymagaj one od uytkownika zainstalowania oddzielnych
bibliotek do przegldarek.
19
Kiedy trzeba uzyska dostp do tych samych danych z rnych lokalizacji, znacznie
prociej osiga si ten cel, gdy dane przechowywane s w jednym miejscu, a nie
w oddzielnych bazach znajdujcych si w tych lokalizacjach. W ten sposb unikasz
potencjalnej synchronizacji danych i obniasz ryzyko zamania zabezpiecze.
Postaramy si zgbi sposoby wykorzystania wspczesnych technologii internetowych do
tworzenia lepszych aplikacji. Naszym celem bdzie wydobycie wszystkiego, co oferuje nam sie.
Ale zanim zaczniemy, chcemy Ci udzieli krtkiej lekcji historii.
20
HTTP i HTML
Protok HTTP jest wspierany przez wszystkie przegldarki i doskonale radzi sobie z zadaniem,
do ktrego jest przeznaczony pobieraniem prostej zawartoci sieci. Za kadym razem gdy
podajesz swojej ulubionej przegldarce adres strony WWW, domylnie uywany jest protok
HTTP. Na przykad, gdy wpisujesz www.mozilla.org w pasek adresowy przegldarki Firefox,
domylnie przyjmie ona, e chciae napisa http://www.mozilla.org.
Standardowym formatem uywanym w internecie jest hipertekstowy jzyk znacznikw (HTML
ang. HyperText Markup Language), oparty o znaczniki, ktre przegldarki rozumiej,
parsuj i wywietlaj. HTML jest jzykiem, ktry okrela formatowanie i zawarto dokumentu.
Taki dokument skada si gwnie ze statycznego tekstu i obrazw. Zwr uwag, e HTML
nie by przeznaczony do tworzenia zoonych aplikacji internetowych z interaktywn zawartoci czy przyjaznym dla uytkownika interfejsem. Kiedy chcesz uda si na kolejn stron
HTML, korzystajc z protokou HTTP, musisz zainicjowa przeadowanie penej strony. I oczywicie strona HTML musi istnie we wskazanej lokacji, zanim wylesz danie jej wywietlenia.
Wyranie wida, e te ograniczenia nie zachcaj do tworzenia niczego interesujcego.
Pomimo to HTTP i HTML s par cieszc si niesabncym powodzeniem i rozumian zarwno przez serwery, jak i klientw (przegldarki). Stanowi one fundament internetu, ktry
znamy. Rysunek 1.1 przedstawia prost transakcj, podczas ktrej uytkownik wysya danie
wywietlenia strony z internetu, uywajc protokou HTTP.
21
Z pewnoci kombinacja HTTP-HTML ma spore ograniczenia. Pozwala jedynie na uzyskiwanie statycznej zawartoci (strony HTML) z internetu. Aby nadrobi te braki, rozwinito kilka
technologii.
Chocia wszystkie dania, o ktrych powiemy, bd uywa do przesyania danych protokou
HTTP, to same dane mog by tworzone dynamicznie na serwerze (na przykad przy uyciu
w tym celu informacji z bazy danych). Co wicej, wszystkie one mog zawiera nie tylko zwyky
HTML, ale mog pozwoli klientowi na zastosowanie pewnych funkcji, nie ograniczajc go
do zwykego wywietlenia statycznej strony.
Technologie, ktre pozwalaj inteligentniej wykorzysta sie, zgrupowalimy w dwch kategoriach:
Q Technologie po stronie klienta pozwalaj klientowi wykonywa bardziej interesujce
22
PHP nie jest jedynie technologi strony serwera. Jest to rwnie jzyk skryptowy, z ktrego
moesz korzysta przy pracy nad skryptem PHP. Na rysunku 1.2 pokazalimy, jak realizowane
jest danie przekazania strony PHP o nazwie index.php. Tym razem serwer nie odsya jej
zawartoci, tylko wykonuje skrypt i zwraca wynik swojego dziaania. Wynik musi by w postaci
HTML bd innej zrozumiaej dla klienta.
Po stronie serwera bdziesz z reguy korzysta z usug serwera bazy danych, by sprawnie zarzdza swoimi danymi. W przykadach, ktre zamiecilimy w tej ksice, uywalimy bazy
MySQL, ale zaoenia s takie same dla kadej innej bazy. Podstawy pracy z bazami danych
i PHP poznasz w rozdziale 3.
Jednak nawet korzystajc z PHP, ktry tworzy odpowiedzi oparte na zawartoci bazy danych,
przegldarka nadal wywietla nudny, statyczny i niezbyt inteligentny dokument HTML.
To wanie potrzeba istnienia lepszych, inteligentniejszych narzdzi po stronie klienta spowodowaa powstanie oddzielnej gazi technologii, ktre nazywamy technologiami strony
klienta. Dzisiejsze przegldarki parsuj z powodzeniem nie tylko prosty kod HTML. Zobaczmy,
jak to dziaa.
23
Czego brakuje?
Wida, e mamy pewne moliwoci. Po co wic ludzie poszukuj nowych rozwiza? Czego
nam brakuje?
Jak zauwaylimy na pocztku tego rozdziau, wszelkie technologie istniej po to, by suy
potrzebom rynku. A cz rynku potrzebuje wikszych moliwoci po stronie klienta bez uycia apletw Java, Flasha czy innych tego typu technologii. S zbyt krzykliwe lub z jakich powodw za due dla uytkownikw. W takich przypadkach projektanci zadowalali si stronami
WWW tworzonymi w HTML, JavaScript i PHP (czy dowolnej innej technologii strony serwera).
Przykad realizacji dania w opisany sposb staralimy si zilustrowa na rysunku 1.3.
24
Widzisz na nim danie przesane protokoem HTTP i odpowied bdc kombinacj HTML
i JavaScript zbudowan za pomoc skryptu PHP. Ukrytym problemem tego rozwizania jest
fakt, e za kadym razem kiedy klient potrzebuje nowych danych z serwera, tworzy si nowe
danie HTTP. To oznacza przeadowanie strony, czyli zamroenie dziaa uytkownika. To
wanie przeadowanie strony jest zem dzisiejszego wiata aplikacji internetowych, a AJAX
zda nam na ratunek.
25
danych na serwerze. W tym wariancie uytkownik musi odczeka tzw. martwy czas, w ktrym
strona ponownie si aduje. Alternatyw jest wykonanie sprawdzenia po stronie klienta. Pamitaj,
e nie zawsze jest to moliwe (lub wykonalne), poniewa wie si z dostarczeniem zbyt wielu
danych do klienta (wyobra sobie sytuacj, w ktrej musisz sprawdzi, czy podane przez uytkownika miasto znajduje si we wpisanym przez niego pastwie).
W wariancie obsugiwanym przez technologi AJAX, ktry chcemy Ci przedstawi, aplikacja
zweryfikuje poprawno wprowadzonych danych, wykonujc wywoania serwera w tle. Na
przykad, kiedy uytkownik wybierze pastwo, przegldarka w locie wyle do serwera danie pobrania listy miast w danym kraju. Zwr uwag, e uytkownik nieprzerwanie wypenia formularz podczas tej aktywnoci przegldarki i serwera. Przykad formularza weryfikujcego podane dane opisalimy w rozdziale 4.
Na co dzie moesz si zetkn z niezliczonymi przykadami zastosowania technologii AJAX.
Udaj si pod podane niej adresy i sprawd na wasnej skrze t rnic:
Q Google Suggest pomaga Ci w wyszukiwaniach Google. Jej moliwoci s prawdziwie
26
27
typu Java Runtime Machine czy Flash. Taki program stworzysz w rozdziale 5.;
Q Pisanie funkcjonalnoci typu Google Suggest pokaemy Ci w rozdziale 6.,
Q Bardziej efektywne wykorzystanie istniejcych technologii. W rozdziale 7.
strony;
Q Nacinicie guzika Wstecz powoduje inne rezultaty ni w przypadku klasycznych
e Twoja aplikacja przestanie dziaa. W razie takich wypadkw warto mie plan
awaryjny, eby nie traci goci.
28
W kocu, zanim zajmiemy si pisaniem pierwszego programu w AJAX, chcemy poda Ci kilka
adresw, ktre mog by przydatne w poznawaniu wiata AJAX:
Q http://ajaxblog.com blog powicony technologii AJAX,
Q http://www.fiftyfoureleven.com/resources/programming/xmlhttprequest
Ta lista w adnym razie nie jest zamknita. Jeli interesuj Ci inne rda w sieci, Google
z pewnoci posuy Ci pomoc. W kolejnych rozdziaach podamy Ci wicej odnonikw, ale
bd one dotyczy bardziej szczegowych zagadnie.
Zaraz stworzysz prost aplikacj AJAX, ktr nazwiemy quickstart. Uytkownik bdzie w niej
poproszony o podanie imienia, a serwer bdzie przesya odpowiedzi w trakcie pisania. Rysunek 1.5 pokazuje stron startow aplikacji index.html (zwr uwag, e plik index.html aduje
si automatycznie podczas otwierania folderu quickstart bez podania jawnie jego nazwy).
29
Moe na pierwszy rzut oka nie widzisz nic niezwykego. Specjalnie podalimy tak prosty
pierwszy przykad. Chodzi o to, aby dokadnie zrozumia, o co w nim chodzi. W tym przykadzie istotne jest to, e odpowiedzi serwera pojawiaj si automatycznie, bez ingerencji
w aktualnie wykonywan przez uytkownika czynno. (Wiadomo pojawia si w trakcie
pisania). Strona nie przeadowuje si, aby wywietli nowe dane, pomimo potrzeby czenia si
z serwerem, aby je uzyska. Nieatwo byoby uzyska taki efekt bez pomocy technologii AJAX.
30
31
Nadesza pora, by stworzy taki kod u siebie. Zanim pjdziemy dalej, upewnij si, e przygotowae sobie rodowisko pracy. Dokadny opis tego, co masz zrobi, znajduje si w dodatku A.
Przeprowadzimy Ci tam przez instalacj i ustawienia PHP i Apache. Pokaemy Ci te, jak
postawi baz, ktra bdzie Ci dalej potrzebna (cho nie w tym przykadzie).
Wszystkie wiczenia w tej ksice wymagaj instalacji opisanych w rodowisku A. Jeli przeprowadzisz
instalacj i konfiguracj inaczej, moesz potrzebowa potem rnych zmian, na przykad uywania innych
nazw folderw.
32
catch (e)
{
xmlHttp = false;
}
}
// jeli uruchomiona jest Mozilla lub inne przegldarki
else
{
try
{
xmlHttp = new XMLHttpRequest();
}
catch (e)
{
xmlHttp = false;
}
}
// zwraca utworzony obiekt lub wywietla komunikat o bdzie
if (!xmlHttp)
alert("Bd podczas tworzenia obiektu XMLHttpRequest.");
else
return xmlHttp;
}
// wysya asynchroniczne danie protokoem HTTP, korzystajc z obiektu XMLHttpRequest
function process()
{
// kontynuuje jedynie jeli obiekt xmlHttp nie jest zajty
if (xmlHttp.readyState == 4 || xmlHttp.readyState == 0)
{
// pobiera imi wpisane przez uytkownika w formularzu
name = encodeURIComponent(document.getElementById("myName").value);
// wykonuje stron quickstart.php na serwerze
xmlHttp.open("GET", "quickstart.php?name=" + name, true);
// definiuje metod obsugi odpowiedzi serwera
xmlHttp.onreadystatechange = handleServerResponse;
// wysya danie do serwera
xmlHttp.send(null);
}
else
// jeli poczenie jest zajte, ponawia prb po 1 sekundzie
setTimeout('process()', 1000);
}
// wykonywana automatycznie po otrzymaniu odpowiedzi z serwera
function handleServerResponse()
{
// kontynuuje jedynie jeli transakcja zostaa zakoczona
if (xmlHttp.readyState == 4)
33
{
// status 200 oznacza pomylne ukoczenie transakcji
if (xmlHttp.status == 200)
{
// wyodrbnia wiadomo XML wysan z serwera
xmlResponse = xmlHttp.responseXML;
// pobiera element gwny ze struktury pliku XML
xmlDocumentElement = xmlResponse.documentElement;
// pobiera wiadomo tekstow pierwszego potomka elementu document
helloMessage = xmlDocumentElement.firstChild.data;
// aktualizuje dane wywietlane klientowi informacjami otrzymanymi z serwera
document.getElementById("divMessage").innerHTML = '<i>' + helloMessage
+ '</i>';
// ponawia sekwencj
setTimeout('process()', 1000);
}
// dla statusu protokou HTTP innego ni 200 zgasza bd
else
{
alert("Wystpi bd podczas uzyskiwania dostpu do serwera: "
+ xmlHttp.statusText);
}
}
}
34
Co wanie zrobilimy?
Teraz zacznie si zabawa musisz zrozumie, co dzieje si w kodzie. (Pamitaj, e szczegy
techniczne dokadniej przedyskutujemy w nastpnych dwch rozdziaach).
Zacznijmy od pliku, z ktrym wsppracuje uytkownik index.html. To w nim znajduje si
odwoanie do tajemniczego pliku quickstart.js. Poza tym ten plik tworzy prociutki interfejs
dla przegldarki. Zwr uwag na wyrnione elementy:
<body onload='process()'>
Serwer chce pozna Twoje imi:
<input type="text" id="myName" />
<div id="divMessage" />
</body>
Kiedy strona si aduje, wykonywana jest funkcja z pliku quickstart.js o nazwie process(). To
sprawia, e element <div> wypeniany jest wiadomoci z serwera.
Zanim zajmiemy si ciaem funkcji process(), przyjrzyjmy si, co dzieje si na serwerze. Tam
jest umieszczony skrypt quickstart.php. To on bdzie tworzy wiadomoci XML wysyane do
klienta. Taki plik XML zawiera element <response>, ktry przygotowuje wiadomo wysyan
nastpnie do klienta.
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<response>
... wiadomo, jak serwer przesya do klienta...
</response>
Jeli zawarto pola przechowujcego imi wysana przez klienta jest pusta, serwer wywietli
komunikat Nieznajomy, podaj swoje imi!. Jeli w polu pojawi si imi Cristian, Bogdan, Filip,
Mihai lub Yoda, odpowiedzi serwera bdzie Witaj mistrzu <imi uytkownika>!. Na kade
inne imi serwer zareaguje, wysyajc wiadomo <imi>, Nie znam Ci!. Wic jeli Myszka
Miki poda swoje dane, to serwer odele tak struktur XML:
<?xml version="1.0" encoding="utf-8" standalone="yes"?>
<response>
Myszka Miki, Nie znam Ci!
</response>
35
Wyrniona linia nagwka okrela typ danych wyjciowych w naszym przypadku jest to
dokument XML. To bardzo wane, poniewa klient oczekuje wanie takiego pliku (API uyte
do parsowania XML po stronie klienta zgosi bd, jeli w nagwku nie pojawi si ContentType: text/xml). Po okreleniu nagwka, budujemy odpowiedzi XML metod sklejania acuchw znakw. Waciwy tekst odpowiedzi serwera zawarty jest w elemencie <response>,
ktry jest gwnym elementem dokumentu XML. Generujemy go, bazujc na danych wysanych
przez klienta za pomoc dania GET.
// pobranie imienia uytkownika
$name = $_GET['name'];
// generacja danych wyjciowych w zalenoci od podanego imienia
$userNames = array('CRISTIAN', 'BOGDAN', 'FILIP', 'MIHAI', 'YODA');
if (in_array(strtoupper($name), $userNames))
echo 'Witaj mistrzu ' . htmlentities($name) . '!';
else if (trim($name) == '')
echo 'Nieznajomy, podaj swoje imi!';
else
echo htmlentities($name) . ', Nie znam Ci!';
// zamknicie elementu <response>
echo '</response>';
?>
Klient wysya do serwera tekst wprowadzony przez uytkownika (w zaoeniu jego imi),
uywajc parametru dania GET. My, zwracajc ten tekst do klienta, posuymy si funkcj
PHP htmlentities. Pozwoli nam to zastpi znaki specjalne ich odpowiednikami w HTML.
W ten sposb zapewniamy sobie poprawne wywietlanie wiadomoci w przegldarce i eliminujemy ryzyko obnienia poziomu bezpieczestwa.
Formatowanie tekstu dla klienta po stronie serwera (zamiast bezporednio u klienta) jest zym nawykiem.
W sytuacji idealnej jedynym obowizkiem serwera jest wysanie danych w najprostszej postaci. To po
stronie odbiorcy ley obowizek poradzenia sobie z kwestiami bezpieczestwa i formatowaniem. Takie
zaoenie jest jeszcze bardziej sensowne, jeli wyobrazisz sobie, e musisz wstawi taki sam tekst do
bazy danych, ale baza bdzie daa innego formatowania. (W takim przypadku to baza, nie serwer odpowiednim skryptem rozwie kwesti formatowania). W przykadzie quickstart formatowanie strony
HTML skryptem PHP pozwolio nam skrci kod.
36
Jeli chcesz sprawdzi dziaanie samego skryptu quickstart.php, wpisz w przegldark http://
localhost/ajax/quickstart/quickstart.php?name=Yoda i zobacz, co uzyskasz. Wielk zalet wysyania parametrw funkcji poleceniem GET jest to, e potem moesz atwo emulowa takie
danie w swojej przegldarce, bo GET oznacza po prostu, e dodae takie parametry jak pary
nazwa-warto do acucha URL. Powiniene otrzyma taki efekt:
Obiekt document jest domylnym obiektem JavaScript, ktry pozwala manipulowa elementami kodu HTML.
37
Pozostaa cz kodu z pliku quickstart.js obsuguje danie wysane na serwer, ktre ma uzyska
wiadomo XML. Funkcja createXmlHttpRequestObject() tworzy i zwraca obiekt XMLHttpRequest.
Jest ona dusza, ni by powinna, poniewa chcielimy, by dziaaa w rnych przegldarkach.
Opowiemy o tym szerzej w rozdziale 2. Na razie musisz wiedzie, co ona robi. Obiekt XMLHttpRequest, pojawiajcy si w funkcji process() jako xmlHttp, ma powodowa asynchroniczne wywoanie serwera. Oto jego posta:
// wysya asynchroniczne danie protokoem HTTP, korzystajc z obiektu XMLHttpRequest
function process()
{
// kontynuuje jedynie jeli obiekt xmlHttp nie jest zajty
if (xmlHttp.readyState == 4 || xmlHttp.readyState == 0)
{
// pobiera imi wpisane przez uytkownika w formularzu
name = encodeURIComponent(document.getElementById("myName").value);
// wykonuje stron quickstart.php na serwerze
xmlHttp.open("GET", "quickstart.php?name=" + name, true);
// definiuje metod obsugi odpowiedzi serwera
xmlHttp.onreadystatechange = handleServerResponse;
// wysya danie do serwera
xmlHttp.send(null);
}
else
// jeli poczenie jest zajte, ponawia prb po 1 sekundzie
setTimeout('process()', 1000);
}
Kod, ktry masz przed oczyma, jest sercem AJAX. To on powoduje wysyanie asynchronicznych
da do serwera.
Dlaczego wywoania asynchroniczne s tak wane? Z definicji nie powoduj one zamroenia
wykonywanych dziaa (rwnie przez uytkownika) a do momentu otrzymania odpowiedzi
na wysane wywoanie. Przetwarzanie asynchroniczne implementuje si na bazie architektury
sterowanej zdarzeniami. Przykadem takiej architektury jest graficzny interfejs uytkownika
bez obsugi zdarze najprawdopodobniej musiaby sprawdza bez ustanku, czy uytkownik nacisn przycisk lub przeskalowa okno. W przypadku obsugi zdarze to przycisk zawiadamia aplikacj, e zosta nacinity, wic moesz wtedy podj odpowiednie kroki w funkcji
obsugujcej zdarzenia. W przypadku AJAX ta teoria znajduje zastosowanie przy wysyaniu
da do serwera - jeste automatycznie informowany o nadejciu odpowiedzi.
Jeli ciekawi Ci, jak dziaaaby aplikacja oparta o synchroniczne dania, musisz zmieni
trzeci parametr obiektu xmlHttp.open na warto false i rcznie wywoa funkcj handleServerResponse(). W czasie takiego uruchomienia okienko, w ktrym podajesz dane, bdzie zamroone na czas wysyania dania do serwera (poniewa czas zamroenia jest uzaleniony
od szybkoci poczenia, jest bardzo prawdopodobne, e nie zauwaysz zmian, jeli serwerem
jest Twj wasny komputer).
38
Jeli poczenie jest zajte, korzystamy z pomocy metody setTimeout i prbujemy po upywie
jednej sekundy (drugi argument funkcji okrela czas w milisekundach, jaki musi upyn
przed ponownym wywoaniem funkcji okrelonej pierwszym argumentem):
// jeli poczenie jest zajte, ponawia prb po 1 sekundzie
setTimeout('process()', 1000);
Jeli linia jest pusta, moesz spokojnie wysa danie. Ponisza linia kodu przygotowuje serwer
na nadejcie dania, ale go nie wysya:
// wykonuje stron quickstart.php na serwerze
xmlHttp.open("GET", "quickstart.php?name=" + name, true);
Pierwszy parametr okrela metod, jak wysyane bdzie imi uytkownika do serwera. Masz
do wyboru metody GET i POST (wicej o tych metodach dowiesz si w rozdziale 3.). Kolejny
parametr to nazwa strony na serwerze, do ktrej chcesz uzyska dostp. Jeli wybrae wczeniej parametr GET, to drugi z parametrw musisz ustawi jako par nazwa=warto. Trzeci parametr przyjmuje warto true, jeli chcesz wywoa serwer asynchronicznie. Przy takim
wywoaniu nie musisz czeka na odpowied. Wystarczy, e zdefiniujesz kolejn funkcj, ktra
wywoa si automatycznie przy zmianie statusu dania.
// definiuje metod obsugi odpowiedzi serwera
xmlHttp.onreadystatechange = handleServerResponse;
39
Po ustawieniu tej opcji usid spokojnie i pozwl systemowi wywoa funkcj handleServerResponse, gdy cokolwiek stanie si z Twoim daniem. Kiedy wszystko ju poustawiasz, inicjalizujesz danie wywoaniem metody send obiektu XMLHttpRequest:
// wysya danie do serwera
xmlHttp.send(null);
Ta funkcja jest wywoywana za kadym razem gdy zmieni si status dania. Funkcja zakoczy dziaanie dopiero gdy warto parametru xmlHttp.response bdzie rwna 4. Moesz te
sprawdza, czy transakcja HTTP zgasza status 200, ktry oznacza, e nie wystpiy problemy
podczas dania HTTP. Dopiero gdy te warunki zostan spenione, bdziesz mg odczyta
odpowied serwera i wywietli j na monitorze uytkownika.
Po otrzymaniu i wykorzystaniu odpowiedzi cay proces powtarza si dziki funkcji setTimeout,
ktra wywouje funkcj process() po upyniciu jednej sekundy (pamitaj, e powtarzanie
wywoania zadania po stronie klienta nie jest niezbdne czy typowe dla technologii AJAX).
Poniej podajemy wywoanie funkcji setTimeout:
// ponawia sekwencj
setTimeout('process()', 1000);
40
Podsumowanie
W tym rozdziale zaprezentowalimy szybki wstp do wiata technologii AJAX. Jeli chcesz
nauczy si tworzenia aplikacji w tej technologii, musisz zrozumie, dlaczego i gdzie si je
wykorzystuje. Jak kada inna technologia, AJAX nie rozwizuje wszystkich problemw, ale
pomaga radzi sobie z czci z nich.
AJAX pozwala Ci czy moliwoci, jakie daje praca po stronie klienta, z zaletami pracy po
stronie serwera. Wszystko to po to, by mg poprawi jako pracy z Twoj aplikacj. Obiekt
XMLHttpRequest daje Ci moliwo asynchronicznego wywoania strony na serwerze przez kod
po stronie klienta. Napisalimy tak krtki rozdzia celowo i celowo pozostawilimy wiele pyta
bez odpowiedzi. Caa ksika zawiera odpowiedzi na nurtujce pytania i demonstracj wykorzystania funkcjonalnoci AJAX.
41