Kiedyś wymyślono, że statyczne strony WWW są nieco nudne i że trochę bardziej zaawansowanej logiki mogłoby dodać im funkcjonalności. Powstał więc język JavaScript, który po pewnym czasie (gdy minął okres wykorzystywania go do animowanych zegarków, spadających płatków śniegu i innych niepoważnych zastosowań) znacząco zyskał na funkcjonalności. Dorobił się między innymi możliwości wysyłania dodatkowych żądań HTTP, niezależnie od pierwotnego requestu, wczytującego całą stronę.
Technika ta jest znana jako AJAX, czyli Asynchronous Javascript And XML. Ten łatwo wpadający w oko akronim jest notabene jednym z najbardziej nietrafnych, jakie da się znaleźć w całej szerokiej domenie informatyki. Jest tak dlatego, gdyż żądania HTTP wysyłane ze skryptów strony WWW:
Ważna jest tu zwłaszcza uwaga ostatnia. Chociaż API do wysyłania żądań HTTP składa się z klasy o nazwie XMLHTTPRequest
, to w istocie nie ma obowiązku korzystania z wbudowanego w nią parsera XML. Równie dobrze potrafi ona zwrócić odpowiedź serwera HTTP w postaci tekstowej, którą możemy potem przetworzyć ręcznie. W praktyce chyba najbardziej popularnym formatem zwrotnym dla zapytań AJAX-owych jest opisywany już przeze mnie JSON.
Oczywiście, nikt przy zdrowych zmysłach nie pisze samodzielnie kodu do owego “przetwarzania ręcznego” odpowiedzi z serwera. Zarówno ten końcowy etap, jak i samo wysyłanie żądania zostało bowiem opakowane w kilka użytecznych frameworków. Jednym z nich jest choćby jQuery, który poza ukrywaniem zbędnych szczegółów AJAX-u posiada też mnóstwo innych przydatnych funkcji ogólnego przeznaczenia.
Do czego może przydać się możliwość łączenia się z serwerem HTTP z poziomu Javascript? Żeby znaleźć odpowiedź, wystarczy dobrze przyjrzeć się właściwie dowolnej bardziej skomplikowanej stronie internetowej..Prawie na pewno znajdziemy na niej mechanizmy, które w tle pobierają dodatkowe dane z macierzystego serwera lub wysyłają doń jakieś informacje. Dzięki temu mogą one realizować takie funkcje jak:
Ładnie opisałeś AJAX. Czy jest szansa, że opiszesz go szerzej? Może jakiś kurs, albo praktyczne zastosowanie?
Praktycznie zastosowanie AJAX-u jest dość ściśle zależne od konkretnej strony, więc jakiekolwiek przykłady wymagałyby pokazania współpracy między kodem klienckim w JS i odpowiednią logiką po stronie serwera. Musiałbym więc założyć co nieco o tym drugim elemencie układanki, a to nie wydaje się specjalnie rozsądne zważywszy na fakt, że liczba używanych obecnie w webdevie języków i/lub frameworków jest naprawdę spora, a różnice między nimi bywają istotne.
Ale fakt, temat jest interesujący i można by rozszerzyć chociażby o:
A i tak, jak wiadomo, AJAX przydaje się tylko do trzech rzeczy: wkurzania użytkownika brakiem poprawnie funkcjonującego “Wstecz” i “Dalej”, wkurzania użytkownika z przeglądarką w no-history-porn-browse-only-get-only-never-send mode (tryb czysto pasywny) i mycia szyb (AJAX jako marka chemii gospodarczej) ;-)
W sumie… niegłupie i użyteczne rozwiązanie, szkoda że masa twórców stron zapomina o jednym drobiazgu: nie każdy używa aktualnej przeglądarki (czy nawet dużej przeglądarki) a wypadałoby, żeby pod links/telnet ze strony też dało się jakieś podstawowe informacje wyciągnąć. Brak wersji very-lite wkurza.
Fajnie napisany artykuł, ale nic nowego tu nie ma :-). AJAX jest już w użyciu od paru lat. Można powiedzieć, że boom nastąpił w 2005 roku, pomimo tego, że obiekt XMLHttpRequest był w JavaScript dostępny znacznie wcześniej. Niemniej jednak, obecne rozwiązania są bardziej zaawansowane i rozbudowane względem ówczesnych.
Odnośnie “Wstecz” i “Dalej”, to rzeczywiście standardowo biblioteki AJAX-owe tego nie obsługują w standardzie, ale da się uzyskać taką funkcjonalność.
W HTML5 można już manipulować historią przeglądarki, więc możliwe jest też uniknięcie AJAX-owych niedogodności związanych z dziwnym zachowaniem przycisku Wstecz. Robi to na przykład opisywany przeze mnie niedawno jQuery Mobile.
Wydaje mi się, że najczęściej używanym formatem danych jest JSON, bo bardzo łatwo radzi sobie z nim zarówno JS jak i PHP, który jest najczęściej używanym do tworzenia stron językiem. Poza tym, te same informacje zapisane w JSON zajmują mniej miejsca niż gdyby były zapisane w XML.
Ogólnie to dobry wynalazek. Szkoda tylko, że tak różni się implementacją w różnych przeglądarkach. Ale od czego jest jQuery ;)