Pełna kontrola
AdvancedAJAX zawiera zestaw dodatkowych modyfikowalnych akcji, które pozwalają na pełną kontrolę nad procesem łączenia, pobierania danych czy ewentualnych błędów. Pierwszą parą są onInitialization i onFinalization, obydwie wykonywane tylko raz. onInitialization wykonywana jest przed tworzeniem obiektu XMLHttpRequest, natomiast onFinalization po wykonaniu wszystkich zdefiniowanych akcji, włączając w to ponawianie połączenia czy wystąpienie błędu.
advAJAX.get({
url: "http://www.example.com/page.html",
onInitialization : function() {
/* Ukrycie warstwy */
someDiv.style.visibility = "hidden";
},
onSuccess : function(obj) {
/* Ustawienie nowej, pobranej z
serwera wartości */
someDiv.innerHTML = obj.responseText;
},
onError : function(obj) {
/* W przypadku wystąpienia błędu
wyświetlenie komunikatu */
alert("Error: " + obj.status);
},
onFinalization : function() {
/* Ponowne pokazanie warstwy po
zakończeniu wszystkich operacji */
someDiv.style.visibility = "visible";
}
});
Proces łączenia i pobierania danych, w przypadku XMLHttpRequest, składa się z czterech części. Wykonywane są w tym przypadku, kolejno, metody onLoading, onLoaded, onInteractive oraz onComplete. Ważny w tym miejscu jest fakt, że onComplete wykonywane jest bez względu na to, czy dane zostały pobrane pomyślnie, czy też wystąpił błąd - wykonywana jest więc zawsze przed onSuccess i onError. Jedynym wyjątkiem jest Opera, przy której nie wywoływana jest metoda onLoaded.
advAJAX.get({
url: "http://www.example.com/page.html",
onLoading : function(obj) {
/* Wyświetlenie obrazka
wskazującego na ładowanie */
},
onComplete : function(obj) {
/* Ukrycie obrazka... */
},
onSuccess : function(obj) {
/* Wyświetlenie pobranych danych */
}
});
W przypadku wystąpienia błędu krytycznego (np. podczas tworzenia obiektu XMLHttpRequest czy otwierania połączenia z adresem w innej domenie czy nieznanym protokole) wykonywana jest metoda onFatalError. Jeśli to wystąpi, skrypt natychmiast kończy działanie, wywołując przedtem jedynie onFinalization.
Poniżej przedstawiono w trzech kolumnach przykładowe wywołania definiowalnych akcji. Pierwsza kolumna to przykład pomyślnego wykonania połączenia i pobranie danych, druga przy wystąpienia błędu 404 Not Found, a trzecia dla dwóch prób ponownego połączenia, ostatecznie zakończona porażką.
onInitialization onInitialization onInitialization
onLoading onLoading onLoading
onLoaded onLoaded onTimeout
onInteractive onInteractive onRetryDelay
onComplete onComplete onRetry
onSuccess onError onLoading
onFinalization onFinalization onTimeout
onRetryDelay
onRetry
onLoading
onTimeout
onFinalization