2010-10-19 14 views
5

quello che sto cercando di fare è di avviare automaticamente una funzione prima di andare nel metodo $.ajax({success});. Ho questo:

$("body").ajaxSuccess(
    function(event, XMLHttpRequest, ajaxOptions) { 
     alert("ajaxSuccess"); 
    } 
); 

e:

$.ajax({ 
    url: ".", 
    success: function() { 
     alert("success"); 
    } 
); 

mio problema è che ho vedere "successo" e poi "ajaxSuccess" o possa avere l'opposto. È possibile? Qualche altra soluzione?

problema è lo stesso con $ .ajaxError() ...

Grazie

risposta

0

è possibile utilizzare la following:

dataFilter(data, type) 

di intercettare la richiesta quando si tratta prima di ritorno dal server. Questo non è esattamente per quello che volevi usarlo, ma è una routine universale pre-successo.

pre-errore forse un gestore di errori globale funzionerà per te?

var obj = { 
    someHandler: function(data, xmlObj, status) {}, 
    someHandler2: function(data, xmlObj, status) {}, 
    someErrorHandler: function(xmlObj, status, error) {}, 
    someErrorHandler2: function(xmlObj, status, error) {} 
} 

jQuery.ajax({ 
    success:function(data, xmlObj, status) { 
     // decide based on data what the run 2nd 
     if (data.success) { 
     obj.someHandler(data, xmlObj, status); 
     } 
     else { 
     obj.someHandler2(data, xmlObj, status); 
     } 
    }, 
    error: function(xmlObj, status, error) { 
     // decide based on data what to run 2nd 
     //same as above. 
    } 
}); 

Faccio qualcosa di simile a questo in uno dei miei progetti. Ho un oggetto Error globale, dove eseguo un gestore di errori in base al TIPO di errore che ritorna dal server. Ho trovato questo per essere un modo semplice e veloce per creare una buona gestione degli errori per AJAX

+0

Ciao, il problema è, non ho modo di distinguere il xhr.status nel metodo DATAFILTER e non hanno modo di lanciare una o un'altra funzione . Nel mio caso lancerei due funzioni separate in ciascun caso. –

+0

Se si effettua la chiamata della seconda funzione generica, è possibile, per entrambi i casi, utilizzare una funzione globale di successo/errore e chiamare la funzione specializzata alla fine. Forse una sorta di oggetto che decide quale funzione secondaria chiamare? –

+0

Hai qualche pezzo di codice, non sono sicuro di capire molto bene ... :( –

Problemi correlati