Professional 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
O autorze .....................................................................9
Wprowadzenie ............................................................11
O ksice ................................................................................... 11
Czym jest Ajax? ........................................................................ 12
Dla kogo przeznaczona jest ta ksika ..................................... 13
Czego potrzebuj, aby skorzysta z tej ksiki? ....................... 13
Konwencje uyte w ksice ...................................................... 14
Cz I
Rozdzia 4.
Cz II
Spis treci
Rozdzia 7.
86
Interakcje tradycyjne
kontra Ajax klient-serwer
W rozdziale 1., Anatomia witryny internetowej, zosta omwiony tradycyjny
model interfejsu witryny internetowej. Kiedy pracujesz z tak witryn, poszczeglne strony zawierajce tekst, obrazki, formularze do wprowadzania danych itd. prezentowane s raz w danej chwili. Kada strona musi zosta obsuona z osobna przed przejciem do kolejnej.
Przykadowo, moesz wypeni formularz z danymi, wprowadzajc je i poprawiajc tyle razy, ile zechcesz. Jednoczenie wiesz, e dane nie powdruj do
serwera, dopki formularz nie zostanie ostatecznie zatwierdzony.
Rysunek 7.1 ilustruje ten rodzaj interakcji.
Rysunek 7.1.
Tradycyjne interakcje
klient-serwer
Po zatwierdzeniu formularza lub klikniciu cza nawigacyjnego musisz czeka, dopki ekran przegldarki jest odwieany, by wywietli now lub skorygowan stron, ktra zostaa wygenerowana przez serwer.
W miar jak Twoje dowiadczenie jako uytkownika Internetu si wzbogaca,
korzystanie z takiego interfejsu staje si niemal drug natur. Uczysz si pewnych praktycznych zachowa, ktre pozwalaj unika kopotw, jak na przykad nie naciskaj ponownie przycisku zatwierdzajcego formularz czy nie
naciskaj przycisku Wstecz po zatwierdzeniu formularza.
Niestety, interfejsy uytkownika zbudowane w oparciu o ten model posiadaj
kilka wad. Pierwsza to taka, e istnieje znaczce opnienie podczas wczytywania nowej lub skorygowanej strony. Nastpuje przerwanie tego, co uytkownicy postrzegaj jako tak zwany przebieg aplikacji.
87
Co wicej, caa strona musi zosta wczytana przy kadej okazji, nawet jeli
wikszo jej zawartoci jest identyczna z poprzedni stron. Elementy wsplne dla wielu stron danej witryny internetowej, takie jak nagwki, stopki
czy sekcje nawigacyjne, mog stanowi znaczn proporcj danych zawartych
w stronie.
Rysunek 7.2 ilustruje witryn wywietlajc strony przed zatwierdzeniem formularza i po nim, ukazujc, jak wiele identycznej zawartoci zostao wczytane
ponownie oraz jak relatywnie mao zmienia si zawarto strony.
88
Wprowadzenie do Ajax
By wzbogaci doznania uytkownika, musisz doda pewne moliwoci do tradycyjnego podejcia do interfejsu aplikacji internetowych. Chcesz, aby strona
Twojego uytkownika bya interaktywna, odpowiadaa na akcje uytkownika
zmieniajc zawarto i by bya aktualizowana bez jakichkolwiek przerw na
wczytywanie strony lub odwieanie ekranu.
Aby to osign, Ajax buduje dodatkow warstw przetwarzania, pomidzy
stron internetow a serwerem.
Warstwa ta czsto okrelana jest mianem Moduu Ajax lub Osnowy Ajax.
Przechwytuje dania od uytkownika, a w tle obsuguje komunikacj z serwerem po cichu, dyskretnie i asynchronicznie. Rozumiemy przez to, e dania
i odpowiedzi serwera nie musz by zbiene z okrelon akcj uytkownika,
ale mog mie miejsce w dowolnym, wygodnym dla uytkownika czasie, by
poprawi dziaanie aplikacji. Przegldarka internetowa nie zamraa si teraz
i nie oczekuje ukoczenia przez serwer ostatniego dania. Zamiast tego, pozwala uytkownikowi na przewijanie ekranu strony, klikanie czy pisanie na
biecej stronie.
89
90
Obiekt XMLHTTPRequest
Kiedy klikasz cze lub zatwierdzasz formularz HTML, wysyasz danie HTTP
do serwera, ktry odpowiada wysyajc do Ciebie now lub zmodyfikowan stron.
Aby jednak Twoja aplikacja internetowa moga pracowa asynchronicznie,
91
musisz posiada moliwo wysania dania HTTP do serwera bez powizania go z daniem wywietlenia nowej strony.
Moesz to osign dziki obiektowi XMLHTTPRequest. Ten obiekt JavaScript
potrafi utworzy poczenie z serwerem, a nastpnie wysya do niego dania
HTTP bez potrzeby powizania ich z wczytywaniem strony.
W nastpnych rozdziaach dowiesz si, jak utworzy instancj tego obiektu
oraz jak jego waciwoci i metody mog by wykorzystane przez procedury
JavaScript, zawarte w stronie internetowej, aby ustanowi asynchroniczne poczenie z serwerem.
Ze wzgldw bezpieczestwa obiekt XMLHTTPRequest moe generalnie czy si z adresami URL tej samej domeny, co wywoywana strona, oraz nie moe bezporednio czy si ze zdalnym
serwerem.
Rozmawianie z serwerem
W tradycyjnym modelu strony internetowej, kiedy wysyasz danie poprzez
hipercze lub zatwierdzenie strony, serwer przyjmuje to danie, wykonuje
wszelkie wymagane czynnoci po stronie serwerowej, by wreszcie wysa do
Ciebie now stron z zawartoci odpowiadajc akcji, jak wykonae.
Gdy to przetwarzanie ma miejsce, interfejs uytkownika jest skutecznie zamroony. Zapewne wiesz ju, kiedy serwer koczy swoje zadanie kiedy
w przegldarce pojawia si nowa lub zmodyfikowana strona.
Jednake w przypadku asynchronicznych da serwera komunikacja odbywa
si w tle, a ich ukoczenie niekoniecznie musi by powizane z odwieaniem
strony czy wczytywaniem nowej. Dlatego te musisz ustali, w jakim stopniu
serwer obsuy dane danie.
Obiekt XMLHTTPRequest posiada wygodn waciwo, ktra raportuje postp
obsugi dania serwera. Moesz sprawdzi t waciwo, uywajc procedur
JavaScript celem okrelenia momentu, w ktrym serwer zakoczy prace, a wyniki
jego dziaania s dostpne do wykorzystania.
92
Z tego powodu Twj kod Ajax musi zawiera procedur monitorujc status
da serwera i odpowiednio si zachowywa. Przyjrzymy si temu zagadnieniu bliej w rozdziale 9., Rozmawianie z serwerem.
Co dzieje si na serwerze?
Dotychczas, gdy interesowalimy si skryptami serwerowymi, komunikacja za
pomoc obiektu XMLHTTPRequest bya po prostu innym daniem HTTP. Aplikacje Ajax niewiele przejmuj si tym, jakie jzyki programowania lub rodowisko jest obecne na serwerze. Przyjmujc, e strona kliencka warstwy Ajax
otrzymuje na czas poprawnie sformatowane odpowiedzi HTTP z serwera, wszystko bdzie pracowa poprawnie.
Moliwe jest napisanie prostej aplikacji Ajax w caoci bez skryptw serwerowych, po prostu wywoujc obiekt XMLHTTPRequest ze statycznym zasobem
serwera, jak na przykad dokumentem XML lub plikiem tekstowym.
Aplikacje Ajax mog wywoywa rozmaite inne serwerowe zasoby, takie jak
na przykad usugi sieciowe (ang. web services). W dalszej czci niniejszej ksiki zapoznamy si z pewnymi przykadami wywoywania usug sieciowych, korzystajc z takich protokow jak SOAP czy REST.
W niniejszej ksice bdziemy korzysta z popularnego serwerowego jzyka skryptowego PHP w procedurach serwerowych. Jeli jednak
czujesz si bardziej komfortowo uywajc takich jzykw jak ASP,
JSP czy innych, nic nie stoi na przeszkodzie, aby z nich korzysta.
93
Zoenie wszystkiego
w jedn cao
Przypumy, e chcesz zaprojektowa now aplikacj Ajax lub zaktualizowa
odziedziczon aplikacj internetow, tak by obsugiwaa techniki Ajax. Jak si
moesz z tym upora?
Po pierwsze musisz zdecydowa, jakie zdarzenia strony i akcje uytkownika
bd odpowiedzialne za wysyanie asynchronicznych da HTTP. Moesz
przykadowo podj decyzj, e zdarzenie onMouseOver wybranego obrazka
bdzie skutkowa wysaniem dania do serwera i pobraniem informacji na
temat tego obrazu. Innym przykadem moe by zdarzenie onClick przycisku,
ktre generowa bdzie danie serwera pobierajce informacje na temat tego,
jak wypeni pola formularza.
W rozdziale 4., Programowanie po stronie klienta przy uyciu JavaScript,
przekonae si, jak JavaScript moe by wykorzystany do wykonania instrukcji poczonych z takimi zdarzeniami, poprzez wykorzystanie procedur obsugi
zdarze. W swojej aplikacji Ajax metody takie odpowiedzialne bd za zapocztkowanie asynchronicznych da HTTP poprzez wykorzystanie obiektu
XMLHTTPRequest.
Majc gotowe dania, musisz napisa procedury monitorujce postp tych da,
reagujce na otrzymanie sygnau z serwera, e danie zostao pomylnie zakoczone.
W kocu, po otrzymaniu powiadomienia, e serwer zakoczy swoje zadania,
potrzebujesz procedury pobierajcej zwrcone informacje z serwera, aby zastosowa je w aplikacji. Moesz przykadowo zechcie wykorzysta nowo
zwrcone dane do zmiany zawartoci tekstu strony, wypenienia pl formularza
lub otwarcia wyskakujcego okienka z informacj.
94
Podsumowanie
W rozdziale tym opisalimy uomnoci tradycyjnego interfejsu internetowego,
wskazujc poszczeglne problemy, ktre chcemy rozwiza. Zaprezentowalimy
rne bloki budulcowe aplikacji Ajax oraz omwilimy, jak one wsppracuj.
W nastpnych rozdziaach czci II przyjrzymy si tym komponentom dokadniej,
wykorzystujc je do zbudowania kompletnej aplikacji Ajax.