XMLHttpRequest
| Ten artykuł jest częścią serii World Wide Web |
|
Struktura stron WWW Generowanie dynamicznych stron WWW ASP, ASP.NET, JSP, PHP, Profile MSP Po stronie użytkownika CSS, JavaScript, AJAX, Kolory w Internecie Przesyłanie danych HTTP(S), HTTP referrer, Serwer WWW, VoiceXML, XMLHttpRequest Pojęcia Architektura informacji, Użyteczność (web-usability), Dostępność (WWW) |
XMLHttpRequest (XHR) – obiekt języków skryptowych (np. JavaScript, JScript lub VBScript) przeglądarek internetowych umożliwiający wykonywanie żądań do serwera WWW za pomocą protokołu HTTP.
Cechą charakterystyczną XMLHttpRequest jest możliwość wykonywania żądań już po załadowaniu się strony internetowej w trakcie interakcji z użytkownikiem. Otrzymane odpowiedzi serwera są wówczas wykorzystywane do modyfikacji załadowanego dokumentu. Możliwość asynchronicznego wykonywania żądań sprawia, że są one wykonywane w tle i nie przerywają interakcji użytkownika ze stroną, dynamicznie ją zmieniając. Treść odpowiedzi serwera najczęściej przekazywana jest w formatach XML, JSON lub czystym tekstem.
XMLHttpRequest stał się podstawą techniki projektowania stron AJAX. Przykłady aplikacji opartych o XHR to Google Gmail, Google Maps i Google Suggest oraz Windows Live Local.
Spis treści |
Metody
| Metoda | Opis |
|---|---|
| abort() | Anuluje aktualne żądanie. |
| getAllResponseHeaders() | Zwraca kompletny zestaw nagłówków HTTP jako łańcuch znaków. |
| getResponseHeader( headerName ) | Zwraca wartość konkretnego nagłówka HTTP. |
| open( metoda, URL ) open( metoda, URL, async ) open( metoda, URL, async, userName ) open( metoda, URL, async, userName, password ) |
Określa metodę, URL i inne opcjonalne argumenty żądania.
Argument metoda może mieć wartość "GET", "POST", "HEAD", "PUT", "DELETE" lub inne metody HTTP wypisane w specyfikacji W3C.[1] Argument URL może być zarówno relatywnym, jak i bezwzględnym adresem. Argument "async" określa czy żądanie powinno być przetwarzane asynchronicznie lub nie – dla 1 ("true") skrypt będzie dalej przetwarzany po wykonaniu metody send(), a dla 0 ("false") skrypt będzie przetwarzany dopiero po otrzymaniu odpowiedzi. |
| send( zawartość ) | Wysyła żądanie. |
| setRequestHeader( nazwaNagłówka, zawartośćNagłówka ) | Dodaje parę nagłówek/zawartość do żądań HTTP. |
Własności
| Własność | Opis |
|---|---|
| onreadystatechange | Określa referencje do funkcji wykonywanej przy każdej zmianie własności readyState. |
| readyState | Zawiera stan obiektu jak następuje:
|
| responseText | Zawiera odpowiedź (łańcuch znaków). |
| responseXML | Zawiera odpowiedź jako XML. Ta własność zwraca obiekt dokumentu XML, który może być parsowany używając klas i interfejsów W3C DOM. |
| status | Zawiera kod odpowiedzi HTTP jako numer (np. 404 dla "Not Found" lub 200 dla "OK"). |
| statusText | Zawiera status jako ciąg znaków (np. "Not Found" lub "OK"). |
Historia i wsparcie przeglądarek
XMLHttpRequest było pierwotnie stworzone przez Microsoft jako część usługi OWA (Outlook Web Access) 2000, w postaci obiektu ActiveX o nazwie XMLHTTP. Jego implementacja jest dostępna w Internet Explorerze poczynając od wersji 5.0[2], poprzez JScript, VBScript i inne języki skryptowe obsługiwane przez IE.
Pierwsza natywna implementacja XMLHttpRequest została włączona przez Mozillę do Mozilla Application Suite 1.0 w 2002 roku. Ta implementacja była potem obsługiwana przez Apple w Safari 1.2, Konqueror, Opera Software od Opery 8.0 i iCab od wersji 3.0b352. Również sam Microsoft w przeglądarce Internet Explorer 7 dodał natywną obsługę.
Konsorcjum World Wide Web opublikowała szkic (Working Draft) specyfikacji obiektu XMLHttpRequest 5 kwietnia 2006 roku[1]. Prace nad nią ciągle trwają, jej celem jest udokumentowanie minimalnego zestawu wspólnych cech istniejących implementacji, co ułatwi tworzenie kodu bez oddzielnych bloków tekstu dla różnych platform. Szkicowa specyfikacja bazuje na implementacjach popularnych przeglądarek, dla zapewnienia przenośności kodu.
Strony wykorzystujące XMLHttpRequest lub XMLHTTP wykorzystują obiekt XMLHttpRequest bezpośrednio w JavaScripcie lub z poziomu gotowych bibliotek konstrukcyjnych (frameworków).
Istnieją również inne metody, które dają te same efekty:
- Niewidzialny IFrame ( korzystając z własności obiektów javascriptu location.href oraz innerHTML )
- Netscape LiveConnect
- Inne obiekty Microsoft ActiveX
- Microsoft XML Data Islands
- Macromedia Flash Player
- Applety Java
Znane problemy
Pamięć podręczna Microsoft Internet Explorera
IE implementuje pamięć podręczna dla zapytań typu GET. Autorzy, którzy nie znają zachowań IE, oczekują że zapytania GET będą odświeżane za każdym razem tak samo jak po odświeżeniu strony. W niektórych sytuacjach może to spowodować błędy na stronie. Najprostszym rozwiązaniem jest stosowanie zapytań typu POST.
Możemy również ustawić nagłówek "Expires" na datę w przeszłości, dzięki czemu unikniemy zapisania strony w pamięci podręcznej. Przykład zastosowania w PHP:
header( "Expires: Mon, 26 Jul 1997 05:00:00 GMT" ); // sprawia, że IE nie zapisze tej strony header( "Last-Modified: " . gmdate( "D, d M Y H:i:s" ) . " GMT" ); header( "Cache-Control: no-cache, must-revalidate" ); header( "Pragma: no-cache" );
To samo można osiągnąć używając Java Servlet:
response.setHeader( "Pragma", "no-cache" ); response.addHeader( "Cache-Control", "must-revalidate" ); response.addHeader( "Cache-Control", "no-cache" ); response.addHeader( "Cache-Control", "no-store" ); response.setDateHeader("Expires", 0);
Alternatywnie można również określić w obiekcie XMLHttpRequest aby pobierał zawartość pomimo zapisanej wersji w pamięci podręcznej, tak jak pokazano w poniższym przykładzie:
req.open( "GET", "xmlprovider.php" ); req.setRequestHeader( "If-Modified-Since", "Sat, 1 Jan 2000 00:00:00 GMT" ); req.send( null );
Kolejnym rozwiązaniem jest używanie losowego ciągu znaków na końcu zapytania:
req.open( "GET", "xmlprovider.php?sid=" + Math.random());
Zapewni to pobranie aktualnej zawartości.
Należy pamiętać, że te techniki powinny być wykorzystywane tylko jeżeli występują problemy. Zamiast wysyłać niepoprawne nagłówki lepiej jest informować użytkownika, że nowe dane mogą być aktualnie dostępne.
Ponowne używanie obiektów XMLHttpRequest w IE
- Opis problemu w angielskojęzycznej wikipedii
- Reusing XMLHttpRequest Object in IE
- Artykuł w quirksmode
Obsługa przeglądarek
- Microsoft jako pierwszy włączył obiekt XMLHTTP w swojej kontrolce ActiveX MSXML.
- Internet Explorer 7 obsługuje obiekt XMLHttpRequest, zachowując kompatybilność z poprzednią implementacją.[2]
- Deweloperzy Mozilli stworzyli własny XMLHttp, ale już jako natywny obiekt przeglądarki nazywający się XMLHttpRequest.
- Opera i Safari mają zaimplementowaną podobną funkcjonalność, ale bardziej podobną do XMLHttpRequest Mozilli.
- Część bibliotek konstrukcyjnych (frameworków) obsługuje tylko jedną z implementacji, a inne obie.
Biblioteki szkieletowe (frameworki)
Powstało wiele bibliotek szkieletowych, które obsługują wszystkie implementacje XMLHttpRequest. Patrz też: AJAX.
Przypisy
Zobacz też
Linki zewnętrzne
Dokumentacje implementacji
- Obiekt XMLHttpRequest – propozycja standardu W3C Working Draft
- Apple Safari 1.2
- Microsoft IXMLHTTPRequest
- obiekt XMLHttpRequest – Mozilla Developer Center
Angielskojęzyczne poradniki
Bezpieczeństwo
- "Attacking AJAX Applications", prezentacja z konferencji Black Hat. Opisuje kilka tematów dotyczących XMLHttpRequest oraz przyszłość AJAX-a działającego na różnych domenach.
| Gry komputerowe Gry komputerowe, piłkarskie, sport… www.euro-mistrzostw… | poradniki do gier www.gry.mocny.com | Firany www.finezja-studio.… | Darmowe gry darmowe gry, gry www.gry.emity.pl | pomoc domowa Warszawa Agencja Dudek www.agencjadudek.pl |
Być może zainteresują Cię strony:
mapa polski rabaty show 30000 pozycjonowanie stron warszawa Lionel Messi jedzenie praca Gliwice skóry meblowe
Nauka na Focus.pl
Inwazja mikrorobotów
Chirurdzy od stuleci starają się operować sprawniej, szybciej i bezpieczniej dla pacjenta. W XXI w. coraz częściej będą ich w tym wyręczały maszyny – także takie, które same poruszają się wewnątrz ciała człowieka
Mon, 09 Aug 2010 09:00:00 +0200
Pora na cyberdoktora
Po stuleciach rozwoju medycyny wiemy już, że technologia jest nam niezbędna do skutecznej walki z chorobami. Lekarze coraz częściej będą musieli ustępować pola maszynom, które zaczynają ich wspomagać, reprezentować, a nawet zastępować podczas zabiegów
Sun, 08 Aug 2010 09:00:00 +0200
Terapia dla systemu
Czytając o futurystycznych terapiach czy technologiach, łatwo możemy zapomnieć, że to, co nowe, z reguły też jest drogie. Ażeby było nas stać na cuda medycyny XXI wieku, musimy najpierw wyleczyć system opieki zdrowotnej
Fri, 06 Aug 2010 09:00:00 +0200
Leczenie na ekranie
Filmowa medycyna po serii wnikliwych analiz i prześwietleń okazuje się po prostu czekaniem na cud – najczęściej technologiczny
Tue, 03 Aug 2010 09:00:00 +0200
Dieta na sto lat
Kiełki brokułu, kawior i jeżyny popite zieloną herbatą – takie menu proponują nam naukowcy. Na szczęście superzdrowa dieta przyszłości nie musi być monotonna
Thu, 29 Jul 2010 09:00:00 +0200
Historia na Focus.pl
Z piekła do raju
Z armią generała Andersa ZSRR opuściło 45 tys. cywilów, głównie kobiet i dzieci. Co drugie dziecko z Syberii trafi ło do brytyjskich kolonii w Afryce. Dla kilkunastu tysięcy maluchów była to przygoda życia
Sat, 04 Sep 2010 09:00:00 +0200
Wycieczka Focusa - okolice Krosna
Fort XIII o nazwie San Rideau (Zasłona Sanu) był kiedyś imponującą budowlą, wchodzącą w skład Twierdzy Przemyśl, którą władze austro-węgierskie umacniały aż do wybuchu I wojny światowej.
Fri, 03 Sep 2010 09:00:00 +0200
Uskrzydlone Indie
Indyjscy nacjonaliści, zamiast chwalić się własnymi osiągnięciami, przypisują sobie odkrycia zagranicznych uczonych. Zachodowi postanowili odebrać nawet samolot!
Thu, 02 Sep 2010 09:00:00 +0200
Jezus, syn Saturna
Do epoki oświecenia ludzie wierzyli, że ciała niebieskie mają decydujący wpływ na ich losy. Ewangeliści, spisując historię Jezusa, również byli pewni, że jego życiem kierował Saturn
Tue, 31 Aug 2010 09:00:00 +0200
Haki Hoovera
Polityka haków jest bardzo niebezpieczna – także dla tych, którzy szykują haki na swych przeciwników. Świadczy o tym choćby przykład szefa FBI
Sun, 29 Aug 2010 09:00:00 +0200
Cywilizacja na Focus.pl
Od stypy do bijatyki
My, Polacy, lubimy przeżywać zbiorową żałobę. Dzięki niej z grupy anarchistycznych egoistów przemieniamy się na chwilę we wspólnotę
Wed, 01 Sep 2010 09:00:00 +0200
Hodowla winniczków
Czy ślimacze mięso to jedyny produkt hodowlany, jaki trafia na talerze smakoszy?
Mon, 23 Aug 2010 09:00:00 +0200
Człowiek, nie fatum
Po kolejnej tragedii związanej z Katyniem określenie „miejsce przeklęte” nasuwało się automatycznie. Rozum podpowiada, by nie szukać związku między zbrodnią popełnioną z premedytacją a katastrofą lotniczą, bo taki nie istnieje. Trudno się jednak powstrzymać, o czym świadczą liczne przykłady
Sun, 22 Aug 2010 09:00:00 +0200
Zielone więzienie
Kryminaliści na platformie nad miastem doją krowy i uprawiają marchewkę – oto wizja architektów z Malezji
Sat, 21 Aug 2010 09:00:00 +0200
Korpoplemiona
Piosenka, w której pracownicy sieci Auchan wyśpiewują swoje oddanie firmie, rozbawiła internautów. Tymczasem identycznie zachowywały się już prehistoryczne plemiona. By przetrwać w nieprzyjaznym środowisku, musiały wzmacniać więzi
Fri, 20 Aug 2010 09:00:00 +0200
Nauka na Onet.pl
Przenoszenie ciąży zwiększa ryzyko porażenia mzgowego
Pord przed terminem jest znanym czynnikiem ryzyka dziecięcego porażenia mzgowego. Naukowcy z Norwegii przekonują, że rwnież przenoszenie ciąży, czyli urodzenie malucha w 42. tygodniu ciąży lub pźniej, zwiększa ryzyko porażenia mzgowego.
Sat, 04 Sep 2010 09:50:00 GMT
Archeolodzy odnaleźli w Gnieźnie pozostałości po bramie i murach
Badania archeologw potwierdziły, że w Gnieźnie w pobliżu tamtejszego kościoła św. Jerzego na Wzgrzu Lecha odkryto pozostałości po bramie wjazdowej do książęcej części gnieźnieńskiego grodu. Wraz z nią odnaleziono też znaczne fragmenty murw o nietypowej konstrukcji.
Fri, 03 Sep 2010 22:30:00 GMT
Lepsze leczenie nowotworw oka
Olej silikonowy może poprawić wyniki leczenia rzadko występujących nowotworw oka - informuje pismo "Archives of Ophtalmology".
Fri, 03 Sep 2010 22:10:00 GMT
Liście curry pomagają w zapobieganiu cukrzycy
Naukowcy amerykańscy odkryli, że aromatyczne liście występującego na Cejlonie i w Indiach drzewa Bergera koenigii obniżają poziom cukru we krwi będący jednym z objaww cukrzycy.
Fri, 03 Sep 2010 09:24:00 GMT
W Chinach odkryto ślady prehistorycznych osad
Chińscy archeolodzy odkryli pozostałości dwch prehistorycznych osad podczas prac wykopaliskowych prowadzonych w płnocnej części kraju - informuje serwis internetowy Sify News. Odkrycia dokonano na stanowiskach znajdujących się na terenie okręgu Tongliao we wschodniej części Regionu Autonomicznego Mongolii Wewnętrznej w Chinach.
Fri, 03 Sep 2010 08:22:00 GMT
Ciekawostki na Onet.pl
WWF zaprasza do "rykw" na rzecz tygrysw
Organizacja ochrony przyrody WWF uruchomiła w czwartek stronę internetową, na ktrej zachęca internautw do "rykw" na rzecz żyjących na wolności tygrysw.
Sat, 04 Sep 2010 09:52:00 GMT
Oryginalny sposb na zbudowanie "domu"
Chiński grnik zbudował 6 metrw pod ziemią dom o powierzchni 50 metrw, gdyż nie było go stać na zwykłe mieszkanie - informuje dziennik "China Daily".
Sat, 04 Sep 2010 04:36:00 GMT
Diesle bardziej ekologiczne niż samochody elektryczne
Wpływ środowiskowy samochodw z silnikami Diesla jest niższy niż samochodw z silnikami elektrycznymi zasilanymi ogniwami. Winny jest proces przygotowania, produkcji, ładowania i recyklingu powszechnie stosowanych w nich ogniw litowo-jonowych - twierdzą w swoim raporcie specjaliści ze szwajcarskich Federalnych Laboratoriw Inżynierii Materiałowej i technologii (EMPA).
Fri, 03 Sep 2010 22:30:00 GMT
Naukowcy określili najbardziej atrakcyjną figurę kobiety
Najbardziej atrakcyjna kobieca figura ma kształt klepsydry i idealną talię. Naukowcy nowozelandzcy przeprowadzili badania, z ktrych wynika, że figura o kształcie klepsydry jest dla mężczyzn znacznie atrakcyjniejsza, niż rozmiar piersi, czy rysy twarzy potencjalnej partnerki, zaś najkorzystniejsze proporcje rozmiarw to stosunek obwodu talii do bioder wynoszący 0.7.
Fri, 03 Sep 2010 22:10:00 GMT
Kuracja dwulatka uzależnionego od papierosw
Dwuletni Indonezyjczyk Aldi Rizal, ktry wypalał do dwch paczek papierosw dziennie, w końcu zerwał z nałogiem. Zdjęcia dziecka, zaciągającego się papierosem, pojawiły się w maju w internecie, wywołując oburzenie na całym świecie.
Fri, 03 Sep 2010 15:27:00 GMT


