¿Cómo puedo asegurarme de que la respuesta de Ajax no se envió debido a algún error? a medida que el cargador sigue cargando, ¿cómo puedo asegurarme de mostrar algún mensaje después de un tiempo específico para el usuario de que algo salió mal? Esto es lo que estoy intentando.
jQuery.ajax({ type: "POST", url:url, data:{id:id}, beforeSend:function() { //loader() }, success: function(msg) { // sucess } }); jQuery.ajax({ type: "POST", url:url, data:{id:id}, beforeSend:function() { //loader() }, success: function(msg) { // sucess }, error: function (jqXHR, exception) { var msg = ''; if (jqXHR.status === 0) { msg = 'Not connect.\n Verify Network.'; } else if (jqXHR.status == 404) { msg = 'Requested page not found. [404]'; } else if (jqXHR.status == 500) { msg = 'Internal Server Error [500].'; } else if (exception === 'parsererror') { msg = 'Requested JSON parse failed.'; } else if (exception === 'timeout') { msg = 'Time out error.'; } else if (exception === 'abort') { msg = 'Ajax request aborted.'; } else { msg = 'Uncaught Error.\n' + jqXHR.responseText; } }, timeout: 5000 // sets timeout to 3 seconds });Prueba este código
jQuery.ajax({ type: "POST", url:url, data:{id:id,type:type}, timeout:5000 //This will set timeout to 5 seconds beforeSend:function() { // loader }, success: function(msg) { // Success }, error: function(){ // It will fire once timeout is reached // If you have any other error in the code // like wrong function name etc,keep it mind timeout // function wouldn't work,and you will see the error without // waiting for the timeout function. })};Por cierto, puede obtener una lista de todos los errores mencionados por @alok.
Puede configurar el error de manejo de la opción de tiempo de espera en la devolución de llamada de error.
$.ajax({ url: "test.html", error: function(){ // will fire when timeout is reached }, success: function(){ //do something }, timeout: 3000 // sets timeout to 3 seconds });