jQuery AJAX gestion des Erreurs (Codes d'État HTTP)

Nous avons une API qui utilise les bon codes d'état HTTP pour les erreurs, et répond avec JSON codé les réponses appropriées et Content-Type en-tête. Ma situation est que jQuery.ajax() déclenche la error de rappel lorsqu'il rencontre une erreur HTTP statut, et non pas le success de rappel, de sorte que même lorsque nous avons intelligible réponse JSON, nous devons recourir à quelque chose comme ceci:

$.ajax({
    //...
    success: function(response) {
        if (response.success) {
            console.log('Success!');
            console.log(response.data);
        } else {
            console.log('Failure!');
            console.log(response.error);
        }
    },
    error: function(xhr, status, text) {
        var response = $.parseJSON(xhr.responseText);

        console.log('Failure!');

        if (response) {
            console.log(response.error);
        } else {
            //This would mean an invalid response from the server - maybe the site went down or whatever...
        }
    }
});

Est-il un meilleur paradigme que de le faire à l'identique de la gestion d'erreur en deux endroits dans chaque jQuery.ajax() appel? Ce n'est pas très SEC, et je suis sûr que j'ai raté quelque chose quelque part sur une bonne gestion des erreurs pratiques dans ces cas.

  • Je suis en supposant par le code d'État HTTP, vous dire que vous êtes de l'envoi de retour 501 du code de statut HTTP en cas d'erreur. Pourquoi voudriez-vous faire si vous êtes correctement la manipulation de l'erreur sur le serveur?
  • Découvrez le jquery.ajax (api.jquery.com/jQuery.ajax) statusCode paramètre.
  • Je suis en utilisant les codes de réponse comme ils étaient destinés à être utilisés. L'envoi d'un 200 OK à chaque réponse aurait besoin de réinventer la roue à l'égard des codes d'erreur/messages.
  • Oui, mais ces erreurs sont dans le protocole au niveau du réseau. Vous avez perdu votre esprit si vous pensez que les erreurs de validation sont les mêmes que les erreurs Http.
  • Rien dans ma question n'a rien à voir avec comment obtenir des codes de réponse de jQuery.ajax().
InformationsquelleAutor FtDRbwLXw6 | 2012-10-04