2012-05-30 27 views
9

Por lo que yo entiendo, una posibilidad de manipular los resultados de error con el Ajax es el siguiente:predeterminado jQuery Ajax statusCode

$.ajax({ 
    url: someUrl, 
    type: 'POST', 
    success: function(data) {}, 
    error: function(jqXHR, exception) { 
     if (jqXHR.status === 0) { 
      alert('Not connect.\n Verify Network.'); 
     } else if (jqXHR.status == 404) { 
      alert('Requested page not found. [404]'); 
     } else if (jqXHR.status == 500) { 
      alert('Internal Server Error [500].'); 
     } else if (exception === 'parsererror') { 
      alert('Requested JSON parse failed.'); 
     } else if (exception === 'timeout') { 
      alert('Time out error.'); 
     } else if (exception === 'abort') { 
      alert('Ajax request aborted.'); 
     } else { 
      alert('Uncaught Error.\n' + jqXHR.responseText); 
     } 
    } 
}); 

O utilice statusCode con el fin de que sea más legible:

$.ajax({ 
    url: someUrl, 
    type: 'POST', 
    statusCode: { 
     200: function(data) { 
        : 
        : 
      }, 
     401: function() { 
        : 
        : 
      }, 
       : 
       : 

Mi pregunta es:
¿Es posible utilizar statusCode y tiene un defecto de funcionamiento para ella?

Respuesta

13

No en el parámetro statusCode. Pero eso se debe a una mejor (y más ligera) forma si desea ver todo:

complete: function(jqXHR, textStatus) { 
    switch (jqXHR.status) { 
     case 200: 
      alert("200 received! yay!"); 
      break; 
     case 404: 
      alert("404 received! boo!"); 
      break; 
     default: 
      alert("I don't know what I just got but it ain't good!"); 
    } 
} 
+7

¡Estupendo, gracias! muy limpio y simple. Solo para aquellos que lo van a usar, agregaría que para obtener el json de la solicitud, necesitas usar 'data = jQuery.parseJSON (jqXHR.responseText);' – guyaloni