2010-08-31 19 views
6

Sto cercando un modo per attivare l'errore ajax nella callback di successo. Ho cercato di spiegare il mio codice problema di seguito:come posso attivare la callback di errore ajax sul callback di successo?

$.ajax({ 
url: requestURL, 
data: postData, 
type: 'post', 
success: function(response){ 
    if(response.Success){ 
     // do something 
    }else{ 
     // request workflow fails in this case, 
     // i have to trigger this ajax request's error callback 
    } 
}, 
error: function(){ 
    // do something on error case 
}, 
dataType: 'json' 
}); 

risposta

10
var errorhandler = function(xhr, textStatus, error){ 
    // do something on error case 
}; 

$.ajax({ 
    url: requestURL, 
    data: postData, 
    type: 'post', 
    success: function(response){ 
     if(response.Success){ 
      // do something 
     }else{ 
      errorhandler(); 
     } 
    }, 
    error: errorhandler, 
    dataType: 'json' 
    }); 
+1

Bello, semplice e al punto. :) – Joshua

+0

Assicurati di farlo comunque: 'errorhandler.apply (this, arguments);' per garantire che scope e argomenti siano ancora lì (non saranno uguali, ma saranno abbastanza buoni). – balupton

+0

@balupton: in generale, sono d'accordo. Ma in questo caso particolare la portata non ha importanza. Non è necessario accedere a 'this' all'interno del gestore degli errori. – jAndy

0

si potrebbe inviare un codice di stato HTTP in modo adeguato la richiamata errore si attiva automaticamente.

L'intervallo di errore 4xx relativo agli errori del client potrebbe essere una buona soluzione. La maggior parte delle API fa uso di stati HTTP per indicare errori insieme a dati JSON/XML aggiuntivi come si sta facendo. Vedi Twitter's response codes per un esempio.

+0

Non riesco a toccare l'ambiente lato server e sto cercando il lato client e sto cercando un modo per chiamare in caso di successo. –

Problemi correlati