AJAX
Z Wikipedii
AJAX (ang. Asynchronous JavaScript and XML, asynchroniczny JavaScript i XML) – technologia tworzenia aplikacji internetowych, w której interakcja użytkownika z serwerem odbywa się bez przeładowywania całego dokumentu, w sposób asynchroniczny. Ma to umożliwiać bardziej dynamiczną interakcję z użytkownikiem niż w tradycyjnym modelu, w którym każde żądanie nowych danych wiąże się z przesłaniem całej strony HTML.
Spis treści |
[edytuj] Podstawowe elementy AJAX
Na technologię tę składa się parę elementów:
- XMLHttpRequest - obiekt umożliwiający asynchroniczne przesyłanie danych przez sieć; dzięki asynchroniczności, w trakcie pobierania danych, użytkownik może wykonywać inne czynności, można także pobierać dane jednocześnie z wielu miejsc.
- JavaScript - mimo użycia w nazwie, może to być de facto dowolny język skryptowy funkcjonujący po stronie użytkownika (np. JScript czy VBScript), który powinien jednak obsługiwać obiektowy model dokumentu (DOM); przetwarzanie danych po stronie użytkownika jest kluczowe, ponieważ odebrane dane muszą zostać wstawione na stronę.
- XML - język znaczników, poprzez który miałyby być opisane odbierane informacje. W praktyce jednak dane często przekazywane są w innym formacie, przy czym odbierane są wtedy jako tekst. Mogą to być zarówno gotowe fragmenty HTML, jak i fragmenty kodu JavaScript (zob. JSON), może to być też format specyficzny dla danego zastosowania.
Teoretycznie są to wszystkie wymagane elementy, jednak w praktyce używane są jeszcze odpowiednie skrypty funkcjonujące po stronie serwera i współpracujące z bazą danych. Można sobie jednak bez nich poradzić, jeśli wszystkie potrzebne dane zostały już wcześniej wygenerowane (np. zawartość poszczególnych stron prostego serwisu).
[edytuj] Wady i ograniczenia
- Udostępnianie treści strony poprzez język skryptowy ogranicza dostęp do niej dla części użytkowników. Dotyczy to zarówno osób używających przeglądarek niewyposażonych w odpowiednie funkcje w szczególności tych korzystających ze specjalnych programów umożliwiających pracę z komputerem osobom niewidomym lub niedowidzącym. Problem ten można obejść udostępniając alternatywne, bardziej tradycyjne rozwiązania przynajmniej dla podstawowych funkcji serwisu internetowego. To jednak znacząco zwiększa koszty wprowadzania nowych rozwiązań i np. portale posiadające obsługę kont pocztowych udostępniają czasem starsze wersje interfejsu.
- Utrudnione jest automatyczne pobieranie stron, gdyż programy takie nie interpretują zwykle języków skryptowych. Możliwość dowolnego pobierania zawartości serwisu nie musi być jednak korzystna z punktu widzenia właścicieli serwisu.
- Bezpośrednie indeksowanie przez serwisy wyszukujące może być utrudnione, jednak wystarczy zadbać o dostarczanie linków wyświetlających całą treść strony lub stworzyć mapę witryny.
- Część starych skryptów do analizy ruchu na stronie oparta jest o klasyczny model udostępniania całych stron (konieczność odświeżenia całości). Nowsze skrypty potrafią jednak uwzględnić właściwy pomiar oglądalności stron. Można również bez przeszkód analizować logi żądań wysyłanych do serwera WWW.
- Wadą rozwiązań w znaczącym stopniu opartych na AJAX jest fakt, że przestaje funkcjonować tradycyjny schemat przeglądania stron umożliwiający swobodne poruszanie się w przód i w tył. Przykładowo jeśli wciśnięcie linka powoduje wywołanie skryptu zmieniającego wnętrze strony (menu pozostaje bez zmian), to użytkownik nie będzie mógł się cofnąć korzystając z przycisku "Wstecz" przeglądarki. Twórcy serwisu WWW mogą jednak zbudować analogiczny mechanizm rozwijając go nawet do wycofywania zmian w konkretnym fragmencie strony.
[edytuj] Przykład utworzenia nowego obiektu XMLHttpRequest
function ajaxFunction(){ var xmlHttp; try{ // Utworzenie obiektu XMLHttpRequest (silnik Gecko, WebKit, Presto, Trident w IE>6) xmlHttp=new XMLHttpRequest(); } catch(e) { // Wyłapuje błąd jeśli JavaScript nie posiada obiektu XMLHttpRequest try { // Utworzenie obiektu ActiveXObject, który jest zawarty w kontrolce ActiveX IE xmlHttp=new ActiveXObject("Msxml2.XMLHTTP"); } catch(e) { try { // Utworzenie obiektu ActiveXObject, dla innych wersji IE xmlHttp=new ActiveXObject("Microsoft.XMLHTTP"); } catch(e) { // Wyświetlenie błędu o braku obsługi obiektu XMLHttpRequest alert("Your browser does not support AJAX!"); return false; } } } // zwrócenie obiektu return xmlHttp; }
[edytuj] Biblioteki AJAX
- popularne biblioteki JavaScript powiązane z AJAX-em
- Prototype - biblioteka ułatwiająca korzystanie z możliwości oferowanych przez AJAX
- jQuery - biblioteka ułatwiająca korzystanie z możliwości oferowanych przez AJAX
- Ext - dawniej rozszerzenie Prototype, Jquery oraz YUI obecnie samodzielna biblioteka
- Script.aculo.us - rozszerza Prototype ułatwiając tworzenie animacji i interfejsów
- MooTools - modułowa biblioteka AJAX zawierająca również ułatwienia do tworzenia efektów wizualnych
- Yahoo! UI Library - biblioteka narzędziowa ogólnie dla DHTML
- Dojo Toolkit - biblioteka narzędziowa ogólnie dla DHTML
- popularne frameworki zawierające skrypty działające po stronie serwera
| Nazwa | Język skryptów | Uwagi |
|---|---|---|
| Echo | Java | |
| Google Web Toolkit | Java | |
| IT Mill Toolkit | Java | |
| ItsNat | Java | |
| OpenXava | Java | |
| ZK Framework | Java | |
| Ajax.NET Professional | ASP.NET | |
| ASP.NET AJAX | ASP.NET | |
| Sajax | PHP | |
| Symfony | PHP | |
| Tigermouse | PHP | |
| Xajax | PHP | |
| Pyjamas | Python |
[edytuj] Zobacz też
[edytuj] Linki zewnętrzne
- Jesse James Garrett: Ajax: A New Approach to Web Applications (ang.). Adaptive path.
- AJAX w DMoz
- Ajax Tutorial (ang.)
- Attacking AJAX Applications - prezentacja dotycząca bezpieczeństwa w skryptach Ajax