2013-07-18 4 views
5

sto scrivendo javascript app e sto usando backbone.js .on l'applicazione ho diverse viste in una pagina, opinioni maggioritarie sent request (richieste < - sono ajax -query, ma non backbone.js ajax-query) al server allo stesso tempo, e hanno avuto un risultato in un periodo strettamente. Se qualcosa non è successo con il server o la rete alcuni response sarebbero stati interrotti e restituiti con errori. Il problema è che tutti gli errori devono visualizzare tramite avvisi all'utente, nonostante il fatto che sia noioso vedere sempre più avvisi per gli utenti. Come posso gestire gli avvisi? Ho usato settimeout per mostrare gli avvisi, ma in questo modo non è utile per diminuire numero di avvisi. Se conoscete un altro modo, parlatene per favore?come gestire gli errori di risposta ajax

risposta

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); 
}); 

È possibile impostare un reporter predefinita AJAX error nel file JS principale come ho. Io uso il plugin jQuery noty!

+0

P.S. Se ti stai chiedendo perché ignoro l'errore "abort'", è perché "Autocomplete" e alcuni altri widget asincroni si interrompono di proposito in modo che possano ricominciare da capo quando qualcosa cambia con i parametri di input. Succede MOLTO, quindi ho disabilitato quelli. – DevlshOne

1

Tutti gli errori devono essere visualizzati ... Ok, quindi basta non avvisare(), utilizzare i div pop con gli errori e mostrarli in un'area di notifica, e. g., nell'angolo in alto a sinistra della tua pagina. Guarda come è fatto in gmail: quando si verifica un errore jax, una piccola notifica viene mostrata al centro della pagina, un utente può leggerla, ma l'intera interfaccia non è bloccata.