2012-07-29 14 views
6

Ho un'app Web, richiede e invia dati tramite AJAX e, come risposta, il mio server invia codici di stato HTTP, a seconda della situazione. quindi, ad esempio, se un utente tenta di accedere mentre è loggato, probabilmente restituisco un 400 HTTP status code. E alla fine lo gestisco con un avviso, ecc.Come gestire un errore HTTP specifico per tutte le chiamate AJAX?

Ma la gestione di questi codici di stato HTTP diventa troppo pesante, dal momento che sto facendo un uso pesante di AJAX. ciò significa che gestirò più volte il codice di stato HTTP con ogni richiesta AJAX, il che si tradurrà in codice duplicato, ed è una cattiva pratica.

Quindi, quello che sto cercando è un modo per gestire tutti questi errori in un posto, quindi ho solo gestire tutti 400, 401, etc con lo stesso codice.

Quello che sto facendo attualmente:

Manipolazione gli errori manualmente per ogni chiamata AJAX. Utilizzando statusCode in $.ajax().

statusCode: { 
     500: function(data) { 
      alert('Some friendly error message goes here.'); 
     } 

sembra come un peso inutile per me, come la mia web app si sviluppa, e come creo le chiamate più Ajax. Ripeterò questo pezzo di codice ancora e ancora.

Attualmente, l'unica idea che ho in mente è la creazione di una funzione che lavorerà sulla parte superiore del AJAX, qualcosa come:

function doAjax(type,url, data, moreVars) { 
//this function is just a SIMPLE example, could be more complex and flexible. 
     $.ajax({ 
      type: type, 
      url: url, 
      data: data, 
      moreOptions:moreVars, 
      //now handling all status code. 
      statusCode: { 
       //handle all HTTP errors from one place. 
      } 
     }); 
    } 

    doAjax("POST", 'mydomain.com/login.php', dataObj); 

risposta

11

È possibile utilizzare $.ajaxSetup() per registrare i gestori di stato errore globale.

Descrizione: Impostare i valori predefiniti per le future richieste Ajax.

Esempio:

$.ajaxSetup({ 
    statusCode: { 
     500: function(data) { 
      alert('Some friendly error message goes here.'); 
     } 
    } 
}); 
+0

* "Nota: le funzioni di callback globali devono essere impostati con i loro rispettivi metodi Ajax-'.ajaxStart del gestore di eventi globali()', '.ajaxStop()', '. ajaxComplete() ',' .ajaxError() ',' .ajaxSuccess() ',' .ajaxSend() '-ruttosto che all'interno dell'oggetto opzioni per' $ .ajaxSetup() '." * – josh3736

Problemi correlati