83 votes

Comment obtenir le code d'état HTTP avec jQuery ?

Je veux vérifier si une page renvoie le code d'état 401. Cela est-il possible ?

Voici mon essai, mais il ne renvoie que 0.

$.ajax({
    url: "http://my-ip/test/test.php",
    data: {},
    complete: function(xhr, statusText){
    alert(xhr.status); 
    }
});

103voto

Ravi Mittal Points 393

C'est possible avec jQuery $.ajax() méthode

$.ajax(serverUrl, {
   type: OutageViewModel.Id() == 0 ? "POST" : "PUT",
   data: dataToSave,
   statusCode: {
      200: function (response) {
         alert('1');
         AfterSavedAll();
      },
      201: function (response) {
         alert('1');
         AfterSavedAll();
      },
      400: function (response) {
         alert('1');
         bootbox.alert('<span style="color:Red;">Error While Saving Outage Entry Please Check</span>', function () { });
      },
      404: function (response) {
         alert('1');
         bootbox.alert('<span style="color:Red;">Error While Saving Outage Entry Please Check</span>', function () { });
      }
   }, success: function () {
      alert('1');
   },
});

73voto

b123400 Points 3811

Le troisième argument est l'objet XMLHttpRequest, vous pouvez donc faire ce que vous voulez.

$.ajax({
  url  : 'http://example.com',
  type : 'post',
  data : 'a=b'
}).done(function(data, statusText, xhr){
  var status = xhr.status;                //200
  var head = xhr.getAllResponseHeaders(); //Detail header info
});

21voto

baloo Points 3146

Utilisez le rappel d'erreur.

Par exemple :

jQuery.ajax({'url': '/this_is_not_found', data: {}, error: function(xhr, status) {
    alert(xhr.status); }
});

Alerte 404

10voto

GvS Points 28137

Je pense que vous devriez également implémenter la fonction d'erreur de la fonction $.ajax méthode.

error(XMLHttpRequest, textStatus, errorThrown)Fonction

Une fonction à appeler si la demande échoue. La fonction reçoit trois arguments : L'objet XMLHttpRequest, une chaîne décrivant le type d'erreur qui s'est produite et un objet exception object, si une erreur s'est produite. Les valeurs possibles pour le second (outre null) sont "timeout", "error", "notmodified" et "parsererror".

$.ajax({
    url: "http://my-ip/test/test.php",
    data: {},
    complete: function(xhr, statusText){
        alert(xhr.status); 
    },
    error: function(xhr, statusText, err){
        alert("Error:" + xhr.status); 
    }
});

9voto

Jigar Trivedi Points 131

J'ai trouvé cette solution où vous pouvez simplement, vérifier le code de réponse du serveur en utilisant code de statut .

Exemple :

$.ajax({
type : "POST",
url : "/package/callApi/createUser",
data : JSON.stringify(data),
contentType: "application/json; charset=UTF-8",
success: function (response) {  
    alert("Account created");
},
statusCode: {
    403: function() {
       // Only if your server returns a 403 status code can it come in this block. :-)
        alert("Username already exist");
    }
},
error: function (e) {
    alert("Server error - " + e);
} 
});

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X