2011-12-14 8 views
7

Tengo una función de contenedor utilizada para enviar solicitudes a un servidor, tengo que hacer algo específico si el servidor devuelve un código de 401 y no estoy seguro de cómo obtener estos datos¿Cómo obtengo el código de respuesta de error HTTP en Jquery POST

$.mobile.showPageLoadingMsg();  
$.post(apiUrl+method,p,function(d) { 

    $.mobile.hidePageLoadingMsg(); 
    console.log(d.success); 
    console.log(d.message); 

    if(d.success == true){ 
     window[callback](d.data); 
    } 
    else{ 
     if(d.message != null){ 
      alert(d.message); 
     } 
    } 
},'json') 
.error(function() { 
    //need to check for 401 status here to do something 
    $.mobile.hidePageLoadingMsg(); 
    alert("error"); 
}); 

Si mi código del lado del servidor 401 emite una excepción a la función jQuery .Error recoge esto simplemente porque no es 200 OK, pero tengo que comprobar si es un código 401.

+0

=== no ==, como sabio para! ==! = :) – Sam

Respuesta

11

En la devolución de llamada error, marque xhr.status donde xhr es el primer argumento de la función.

0

Actualización sobre el método de "promesa": como de jQuery 1.5 podemos llamar la promesa .fail() y obtener el código de estado como esto:

$.post("example.php", function() { 
    alert("success"); 
}).fail(function(xhr) { 
    console.log(xhr.status); 
}); 

Tenga en cuenta que .ERROR() promesa es eliminado a partir de jQuery 3.0

Cuestiones relacionadas