<

Pozycjonowanie stron www i SEO / SEM

Dlatego PierwszeMiejsce.pl oferuje Ci skuteczność pozycjonowanie strony.

Zdobyte doświadczenie i nowoczesne rozwiązanie.» Pozycjonowania Państwa działalnością, Państwa podstron, użytkowania.

Pozycjonowanie i tworzenie pozycjonowanie BydgoszczW erze Internetowy i zapewnić pozycje na pierwszych stronach wyników pozycje na pierwszej strony na wskazanym serwerze - gratiscena: ustalana indywidualnie w zależności od stopnia złożoności aplikacji wizualnej firmy tych, które aktywnie poszukują w wyszukiwarkach internetowej na pierwzych pozycji strony internetowej od 1999 roku,

XMLHttpRequest

World Wide Web

Struktura stron WWW

HTML, XHTML, XML, XSL


Generowanie dynamicznych stron WWW

Active Server Pages, ASP.NET, JavaServer Pages, PHP


Po stronie użytkownika

kaskadowe arkusze stylów, JavaScript, AJAX, kolory w Internecie


Przesyłanie danych

Hypertext Transfer Protocol, HTTPS, HTTP referrer, serwer WWW, VoiceXML, XMLHttpRequest


Pojęcia

architektura informacji, użyteczność, dostępność

XMLHttpRequest (XHR) – obiekt języków skryptowych (np. JavaScript, JScript albo VBScript) przeglądarek internetowych umożliwiający wykonywanie żądań do serwera WWW za pomocą protokołu HTTP.

Aspektem 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 oraz nie przerywają interakcji użytkownika ze stroną, dynamicznie ją zmieniając. Treść odpowiedzi serwera najczęściej przekazywana jest w formatach XML, JSON albo czystym tekstem.

XMLHttpRequest stał się podstawą techniki projektowania stron AJAX. Przykłady aplikacji opartych o XHR to Google Gmail, Google Maps oraz 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 )
Definiuje metodę, URL oraz inne opcjonalne argumenty żądania.

Argument metoda może posiadać wartość "GET", "POST", "HEAD", "PUT", "DELETE" albo inne metody HTTP wypisane w specyfikacji W3C.[1]

Argument URL bywa zarówno relatywnym, jak oraz bezwzględnym adresem.

Argument "async" wyznacza czy żądanie winno być przetwarzane asynchronicznie albo 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 Definiuje referencje do funkcji wykonywanej przy każdej zmianie własności readyState.
readyState Zawiera stan obiektu jak następuje:
  • 0 = zapytania niezainicjowane
  • 1 = cel otwarty
  • 2 = zapytanie wysłane
  • 3 = odbieranie odpowiedzi
  • 4 = żądanie zakończone
responseText Zawiera odpowiedź (łańcuch znaków).
responseXML Zawiera odpowiedź jako XML. Ta własność zwraca obiekt dokumentu XML, który bywa parsowany używając klas oraz interfejsów W3C DOM.
status Zawiera kod odpowiedzi HTTP jako numer (np. 404 dla "Not Found" albo 200 dla "OK").
statusText Zawiera status jako ciąg znaków (np. "Not Found" albo "OK").

Historia oraz wsparcie przeglądarek

XMLHttpRequest było pierwotnie zbudowane przez Microsoft jako cząstka 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 oraz inne języki skryptowe obsługiwane przez IE.

Pierwsza natywna implementacja XMLHttpRequest był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 oraz 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 wykonywanie kodu bez oddzielnych bloków tekstu dla wielorakich platform. Szkicowa specyfikacja bazuje na implementacjach popularnych przeglądarek, dla zapewnienia przenośności kodu.

Strony wykorzystujące XMLHttpRequest albo XMLHTTP wykorzystują obiekt XMLHttpRequest bezpośrednio w JavaScripcie albo z poziomu gotowych bibliotek konstrukcyjnych (frameworków).

Istnieją także 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 pewnych sytuacjach może to spowodować błędy na stronie. Najprostszym rozwiązaniem jest stosowanie zapytań typu POST.

Możemy także 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" );
 header( "Expires: -1", false );

To samo da się 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 da się także 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 są problemy. Zamiast wysyłać niepoprawne nagłówki lepiej jest informować użytkownika, że nowe dane bywają aktualnie dostępne.

Ponowne używanie obiektów XMLHttpRequest w IE

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 oraz Safari posiadają 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

Sprawdź też

Linki zewnętrzne

Dokumentacje implementacji

Angielskojęzyczne poradniki

Bezpieczeństwo

Kody pocztowe | katalog stron | tanie noclegi łeba | naprawa notebooków | jak uczymy w bellu