2013-08-28 15 views
8

Desidero gestire gli errori 401 globalmente e gestire solo altri errori localmente. Localmente significa all'interno del gestore fail per una chiamata AJAX.jQuery gestore globale di errori ajax si attiva prima di "locale"

Per fare ciò, ho implementato un gestore ajaxError su document. Tuttavia, il problema è che il gestore locale fail viene attivato prima di quello globale. Quindi il event.stopImmediatePropagation() all'interno del gestore globale è inutile.

Come posso fare in modo che quello globale sia licenziato per primo e quindi impedire a quello locale di sparare del tutto. Grazie.

+1

non è possibile senza il confezionamento tutte le richieste Ajax in un metodo di supporto che invece vincolano il gestore di errore * * "globale" direttamente al jqXHR e abbandonando il gestore ajaxError globale. Anche in questo caso, non sono sicuro che tu possa impedirgli di raggiungere i gestori di errori aggiuntivi senza nemmeno più lavoro dal momento che questi non sono eventi tecnicamente. –

+2

Questo è piuttosto fastidioso. Perché avere un gestore globale se spara dopo il listener locale? ... Ed è troppo tardi per un wrapper. – Francisc

+0

Non necessariamente troppo tardi. È possibile creare un wrapper senza effettivamente cambiare il nome del metodo. –

risposta

-1
var statusCodeError = function(error) { 
     throw new Error('--> Error code ' + error.status + ' on XMLHttpRequest'); 
    }; 
    var settings = { 
     type  : 'POST', 
     url   : '/ajax-script.php', 
     dataType : 'json', 
     context  : document.body, 
     statusCode : { 
      404: statusCodeError, 
      301: statusCodeError, 
      302: statusCodeError, 
      401: statusCodeError, 
      500: statusCodeError 
     }, failure : statusCodeError 
    }; 

    $.ajaxSetup(settings); 
Problemi correlati