Comment gérer une erreur HTTP spécifique pour tous les appels AJAX?

J'ai une application Web, demandant et envoyant des données via AJAX, et en réponse, mon serveur envoie des codes d'état HTTP selon la situation. Par exemple, si un utilisateur essaie de se connecter pendant qu'il est connecté, je renvoie probablement un 400 HTTP status code . Et finalement, je le manipule avec une alerte, etc.

Mais la manipulation de ces codes d'état HTTP devient trop lourde, car j'utilise fortement AJAX. Cela signifie que je traiterai le code d'état HTTP à plusieurs reprises avec chaque demande AJAX, ce qui entraînera un code en double, et c'est une mauvaise pratique.

Donc, ce que je cherche, c'est un moyen de gérer toutes ces erreurs dans un seul endroit, alors je manipule tous les 400 , 401 , etc. avec le même code.

Ce que je fais actuellement:

Manipulation des erreurs manuellement pour chaque appel AJAX. En utilisant the statusCode en $.ajax() .

  statusCode: { 500: function(data) { alert('Some friendly error message goes here.'); } 

Cela me semble une overkill, à mesure que mon application Web se développe et que je crée plus d'appels ajax. Je répéterai ce code encore et encore.

Actuellement, la seule idée que j'ai à l'esprit est de créer une fonction qui fonctionnera au dessus d'AJAX, quelque chose comme:

  function doAjax(type,url, data, moreVars) { //this function is just a SIMPLE example, could be more complex and flexible. $.ajax({ type: type, url: url, data: data, moreOptions:moreVars, //now handling all status code. statusCode: { //handle all HTTP errors from one place. } }); } doAjax("POST", 'mydomain.com/login.php', dataObj); 

Vous pouvez utiliser $.ajaxSetup() pour enregistrer les gestionnaires d'état de l'erreur globale.

Description : Définissez les valeurs par défaut pour les futures demandes Ajax.

Exemple:

 $.ajaxSetup({ statusCode: { 500: function(data) { alert('Some friendly error message goes here.'); } } });