piszę javascript
app i używam backbone.js
.Na aplikacji mam kilka widoków na stronie, poglądy większości wysłane request
(żąda < - są ajax -query, ale nie backbone.js
ajax-query) na serwer w tym samym czasie, a ich rezultat był bliski. Jeśli coś stało się nie tak z serwerem lub siecią, niektóre z nich zostały uszkodzone i zwrócone z błędami. Problem polega na tym, że wszystkie błędy muszą wyświetlać przez alerty do użytkownika, pomimo faktu, że nudne jest widzieć coraz więcej alertów dla użytkowników. Jak zarządzać alertami? Użyłem settimeout
, aby wyświetlić alerty, ale ten sposób nie jest pomocny w przypadku zmniejszenia liczby alertów. Jeśli znasz inny sposób, proszę powiedz mi o tym?jak zarządzać błędy odpowiedzi ajax
5
A
Odpowiedz
4
function alertMajorError(errMsg) {
errMsg = typeof errMsg !== 'undefined' ? errMsg : 'Fatal Error!';
var n = noty({layout:'center',type:'error',text:errMsg,timeout:false});
}
$(document).ajaxError(function(event, jqxhr, settings, exception) {
if (exception == 'abort') return false;
alertMajorError('An AJAX error [' + exception + '] occurred in script: ' + settings.url + '<br \><br \>Please report this to the development team!');
console.log(event, jqxhr, settings, exception);
});
Można ustawić domyślny AJAX error
reporter w głównym pliku JS jak mam. Używam wtyczki jQuery noty
!
1
Wszystkie błędy muszą być wyświetlone ... OK, po prostu nie alarmuj(), używaj wyskakujących okien z błędami i wyświetlaj je w obszarze powiadomień, np. w lewym górnym rogu strony. Zobacz, jak to się robi w Gmailu: kiedy pojawia się błąd ajax, na środku strony wyświetlane jest małe powiadomienie, użytkownik może je przeczytać, ale cały interfejs nie jest blokowany.
P.S. Jeśli zastanawiasz się, dlaczego ignoruję błąd 'abort', to dlatego, że' Autouzupełnianie' i niektóre inne asynchroniczne widżety celowo zostaną przerwane, aby mogły zacząć od nowa, gdy coś zmieni się z wprowadzonymi parametrami. Zdarza się DUŻO, więc je wyłączyłem. – DevlshOne