2010-08-31 6 views
6

Je cherche un moyen de déclencher une erreur ajax dans le rappel de succès. J'ai essayé d'expliquer mon code problème ci-dessous:comment puis-je déclencher le rappel d'erreur ajax sur le rappel de succès?

$.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' 
}); 

Répondre

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

Joli, simple et pertinent. :) – Joshua

+0

Assurez-vous de faire ceci: 'errorhandler.apply (this, arguments);' pour vous assurer que la portée et les arguments sont toujours là (ils ne seront pas les mêmes, mais ils seront assez bons). – balupton

+0

@balupton: en général, je suis d'accord. Mais dans ce cas particulier, la portée n'a pas d'importance. Pas besoin d'accéder à 'this' dans le gestionnaire d'erreurs. – jAndy

0

Vous pouvez envoyer un code d'état HTTP approprié de sorte que le rappel d'erreur est déclenchée automatiquement.

La plage d'erreur 4xx qui se rapporte aux erreurs client peut être un bon ajustement. La plupart des API utilisent des statuts HTTP pour indiquer une erreur avec des données JSON/XML supplémentaires comme vous le faites. Voir Twitter's response codes pour un exemple.

+0

Je ne peux pas toucher l'environnement côté serveur et je suis à la recherche de côté client et je cherche un moyen d'appeler à l'intérieur de cas de succès. –