Loading:

Promocja Helion.pl

Prototype Ajax.Request

Jeśli nie używasz żadnej biblioteki pomocniczej, to zapewne jesteś zmuszony do stworzenia dużej ilości kodu obsługującego obiekt XMLHttpRequest, z obsługą różnych przeglądarek, śledzącego stan wykonania zapytania, a nastęnie wyciągającego i przetwarzającego uzyskaną odpowiedź. Dzięki Ajax.Request możesz ten proces znacznie uprościć. Obsługę XMLHttpRequest wykonujesz w tym wypadku za pomocą jednej instrukcji, a jedyne co Ci pozostaje to stworzenie funkcji, która obsłuży odpowiedź serwera:


var myAjax = new Ajax.Request(
url,
{
method: 'get',
parameters: pars,
onComplete: showResponse
});



Gdzie 'url' to adres, z którego chcemy pobrać dane, zaś drugim parametrem jest lista parametrów dotyczących sposobu działania Ajax.Request; 'metod' określa czy zapytanie zostanie przesłane metodą GET czy POST, parametr jest opcjonalny, jeśli nie zostanie otwarcie wywołany metodą przesyłu danych będzie POST; 'parameters' przybiera wartość ciągu zapytania przesłanego do serwera (parametr opcjonalny), zaś 'onComplete' przybiera jako wartość nazwę funkcji która obsłuży odpowiedź serwera - jest odpowiednikiem kodu, który zostałby stworzony do obsługi dla przypadku http_request.readyState == 4 gdybyśmy nie używali żadnej biblioteki. Odpowiedz Ajax'a może przybierać stany od 0 do 4 ich odpowiedniki dla tej klasy są następujące:

  • onUninitialised: 0 (niezainicjowane)
  • onLoading:1 (w trakcie pobierania)
  • onLoaded:2 (pobrano)
  • onInteractive:3 (interaktywne)
  • onComplete:4 (gotowe)

Zatem jeśli chcesz obsłużyć inne zdarzenia wystarczy dodać je do listy parametrów z nazwą funkcji, która je obsłuży. Należy pamiętać, że w wielu sytuacjach przeglądarka nie pozwoli na użycie adresu, jeśli wskazuje na inny serwer (domenę) niż ta, z której pobrana została bieżąca strona.Pozostałe opcje jakie mogą zostać dodane do Ajax.Request to:

  • asynchronous (true/false) - wskazuje, czy zapytanie AJAX zostanie obsłużone asynchronicznie. Domyślnie: true
  • postBody - Dane przekazane wewnątrz zapytania HTTP, jeśli wykorzystywana jest metoda POST.
  • requestHeaders - Lista nagłówków HTTP do przekazania w ramach zapytania HTTP. Lista ta musi być tablicą zawierającą parzystą liczbę elementów, na przemian nazwy i zawartość kolejnych nagłówków. Np:['header1', 'zawartość header1', 'header2', 'zawartość header2']
  • onSuccess - Funkcja, która ma zostać wykonana kiedy zapytanie AJAX zakończy się sukcesem. Wskazana funkcja zostanie wywołana z jednym parametrem - obiektem XMLHttpRequest używanym do tej operacji AJAX.
  • onFailure - Funkcja, która ma zostać wykonana kiedy zapytanie AJAX zakończy się niepowodzeniem. Wskazana funkcja zostanie wywołana z jednym parametrem - obiektem XMLHttpRequest używanym do tej operacji AJAX.
  • onException - Funkcja, która ma zostać wykonana po wystąpieniu po stronie klienta wyjątku AJAX, takiego jak niewłaściwa odpowiedź lub błędne parametry. Funkcja otrzyma dwa parametry: obiekt Ajax.Request, obsługujący operację, która spowodowała wyjątek, oraz sam wyjątek.

Zatem aby np: wykonać instrukcje Ajax'a, która wstawi do elementu dokumentu HTML o id="right" zawartość dokumentu "test.htm", zaś w przypadku niepowodzenia operacji wyświetli monit o niepowodzeniu nasz kod przyjmie postać:


var myAjax = new Ajax.Request(
url,
{
method: 'get',
onComplete: showResponse,
onFailure: showAlert
});



i funkcje obsługi:


function showResponse(MyRequest)
{ //parametrem funkcji jest obiekt XMLHttpRequest
//wygenerowany przez Ajax.Request

$('right').innerHTML = MyRequest.responseText
}

function
showAlert(MyRequest) {
alert("Operacja nie powiodła się");
}



Napisz Artykuł

Listing

niema


Ten wpis posiada swój wątek na forum

Wszystkie pytania prosimy kierować właśnie tam ponieważ komentarze to miejsce na poprawki do kodu lub alternatywne rozwiązania i pytania nie będą publikowane

http://forum.funkcje.net/forum/viewtopic.php?f=2&t=249

Dane do logowania na forum są takie same jak na funkcje.net



Dodano przez: igor
Ranga: Administrator serwisu Punktów: 28716
Komentarze użytkowników
    • Treść komentarza
      Kod do komentarza (opcjonalnie)
      PHP JavaScript MySQL Smarty SQL HTML CSS ActionScript
      Autor
      Token
      token

       

       








funkcje.net
Wszelkie prawa zastrzeżone©. | Funkcje.net 2008-17 v.1.5 | design: diviXdesign & rainbowcolors