2011-11-07 12 views
7

Obecnie, jeśli mam błąd z prośbą o ajax, np. Przesłanie formularza (używam ASP.NET MVC 3), wyświetli się komunikat "Błąd wewnętrznego serwera".Pokaż poprawne komunikaty o błędach z jQuery AJAX

Ale jeśli zrobię zgłoszenie bez użycia Ajax, wtedy .net wyświetli rzeczywisty błąd serwera.

Jakieś pomysły na temat tego, jak mógłbym wyświetlić błąd? Więc moi użytkownicy mogą zgłosić problem, a nie tylko jest w stanie powiedzieć „wewnętrzny błąd serwera”

Dzięki

+4

Wyświetlanie aktualnych komunikatów o błędach użytkownikom może podnieść problemy z bezpieczeństwem. Lepiej dać im identyfikator odpowiadający wyjątkowi zapisanemu w DB. – SLaks

Odpowiedz

23

Chociaż nie poleciłbym pokazujący użytkownikowi numer błędu z komunikatem o błędzie rzeczywistej reakcji jest to w jaki sposób można to zrobić poprzez dodanie error zwrotnego

error: function(xhr,err){ 
    alert("readyState: "+xhr.readyState+"\nstatus: "+xhr.status); 
    alert("responseText: "+xhr.responseText); 
} 

XHR jest XmlHttpRequest.

readyState wartości to 1: ładowanie, 2: ładowanie, 3: interaktywne, 4: kompletne.

Stan to numer statusu HTTP, tj. 404: nieznaleziony, 500: błąd serwera, 200: ok.

responseText to odpowiedź od serwera - może to być tekst lub JSON z usługi internetowej lub HTML z serwera WWW.

6

Kod ten zastąpi zawartość bieżącej strony jest z błędem, który wrócił z żądania AJAX.

jQuery(document).ajaxError(function (event, request, settings) { 
    if (request.status === 500) { 
     $(document.body).html(request.responseText); 
    } else if (request.status === 401) { 
     // redirect to login, 401 means session is expired. 
     window.location.href = "login page url"; 
    } 
}); 
Powiązane problemy