2010-05-21 9 views
6

Załóżmy na przykład, że chcę częściowo sklonować interfejs Gmaila z jQuery Ajax i wdrożyć okresowe automatyczne zapisywanie, a także wysyłanie. W szczególności załóżmy, że zależy mi na obsłudze błędów, spodziewaniu się błędów sieciowych i innych, i zamiast być optymistą, chcę rozsądnie radzić sobie z różnymi błędami.Jakie są najlepsze praktyki jQuery dotyczące wygodnych metod Ajax i obsługi błędów?

Jeśli używam funkcji "low-level" w $ .ajax(), to jest jasne, jak określić błąd zwrotny, ale metody wygody $ .get(), $ .post() i .load() nie zezwalaj na podanie wywołania zwrotnego błędu.

Jakie są najlepsze praktyki w zakresie pesymistycznej obsługi błędów? Czy jest to rejestracja .ajaxError() z niektórymi opakowanymi zestawami lub globalna obsługa błędów w stylu introspekcji w $ .ajaxSetup()? Jak wyglądałyby odpowiednie fragmenty kodu, aby zainicjować automatyczne zapisywanie, aby wyświetlało się ostrzeżenie typu "nie można automatycznie zapisywać", jeśli próba automatycznego zapisywania się nie powiedzie, a być może komunikat dostosowany do typu błędu?

Dzięki,

Odpowiedz

10

powszechną praktyką jest, aby używać $.ajaxSetup określenie rodzajowe obsługi zwrotnej za błędy podczas nie- $.ajax funkcji. Na przykład.

function init() { 
    $.ajaxSetup({ 
     error: handleXhrError 
    }); 
} 

function handleXhrError(xhr, errorType, exceptionThrown) { 
    // ... 
} 

Wewnątrz handleXhrError można wyświetlać albo modalnego okna lub jakiś pasek powiadomień jak Gmail robi, albo wymienić cały document, w zależności od wymagań funkcjonalnych. Możesz podjąć działanie w oparciu o treść odpowiedzi uzyskaną przez xhr.responseText i/lub HTTP status code z xhr.status. Wartości treści odpowiedzi i statusu można kontrolować od strony serwera. Powinny one zapewnić wystarczającą ilość informacji o problemie oraz o tym, jakie działania należy podjąć. Numer errorType będzie równy 'timeout' po przekroczeniu limitu czasu (np. Problem z siecią).

Powiązane problemy