Mostrar errores $ajax en métodos GET y POST

Supongamos que intentamos enviar un formulario o url, ya sea por método POST o GET, sin embargo, por alguna razón no llega al evento "success" y no encontramos ningún error aparente, entonces necesitamos saber que es lo que nos está causando el problema. Para ello, una de las soluciones es añadir un pequeño fragmento de código.

Supongamos que tenemos este cóodigo que no lanza el error:

$.ajax({
 type: "GET",
 url: "archivo.php",
 data: "variablesurl",
 dataType: "html",
 beforeSend: function(){
  $("#resultado").html("Enviando...");
 },
 error: function(){
  $("#resultado").html("Error");
 },
 success: function(data){
  $("#resultado").html(data);
 }
});

Nos vamos a situar justo antes de el último "punto y coma" ( ; ) e insertaremos lo siguiente:

.fail( function( jqXHR, textStatus, errorThrown ) {
  if (jqXHR.status === 0) {
    alert('Sin conexión, comprueba la red');
  } else if (jqXHR.status == 404) {
    alert('No se encuentra la URL');
  } else if (jqXHR.status == 500) {
    alert('Error interno del servidor');
  } else if (textStatus === 'parsererror') {
    alert('Error JSON');
  } else if (textStatus === 'timeout') {
    alert('Error timeout');
  } else if (textStatus === 'abort') {
    alert('Petición abortada');
  } else {
    alert('Error no detectado: ' + jqXHR.responseText);
  }
})

Deberá quedar algo así:

$.ajax({
 type: "GET",
 url: "archivo.php",
 data: "variablesurl",
 dataType: "html",
 beforeSend: function(){
  $("#resultado").html("Enviando...");
 },
 error: function(){
  $("#resultado").html("Error");
 },
 success: function(data){
  $("#resultado").html(data);
 }
}).fail( function( jqXHR, textStatus, errorThrown ) {
  if (jqXHR.status === 0) {
    alert('Sin conexión, comprueba la red');
  } else if (jqXHR.status == 404) {
    alert('No se encuentra la URL');
  } else if (jqXHR.status == 500) {
    alert('Error interno del servidor');
  } else if (textStatus === 'parsererror') {
    alert('Error JSON');
  } else if (textStatus === 'timeout') {
    alert('Error timeout');
  } else if (textStatus === 'abort') {
    alert('Petición abortada');
  } else {
    alert('Error no detectado: ' + jqXHR.responseText);
  }
});
De esta manera ya tendrás una idea por donde solucionar tu error, en mi caso no encontraba lógica al error puesto que aparentemente todo estaba correcto, sin embargo en el proyecto tenía aplicada la etiqueta html <base> hacia mi ip, y la url la había cargado desde localhost, así que algo raro pasaba y me jodía todo.

Y nada, a ver si a alguien le es útil este pequeño tip.

Saludos!

Si quieres dejar la url de tu web, redacta un comentario válido y acorde al tema.
EmoticonEmoticon