Foros del Web » Programando para Internet » Jquery »

Establecer retardo en cartel cuando fail

Estas en el tema de Establecer retardo en cartel cuando fail en el foro de Jquery en Foros del Web. Hola, cuál es la manera adecuada de establecer un retardo de unos segundos para mostrar el error de una petición AJAX ?? yo la empiezo ...
  #1 (permalink)  
Antiguo 04/10/2016, 15:06
 
Fecha de Ingreso: octubre-2007
Mensajes: 273
Antigüedad: 16 años, 5 meses
Puntos: 5
Establecer retardo en cartel cuando fail

Hola, cuál es la manera adecuada de establecer un retardo de unos segundos para mostrar el error de una petición AJAX ??

yo la empiezo de la siguiente forma en la petición AJAX:
Código:
beforeSend:function(){
    $('#indicador').addClass('cargando-satisfactorio').fadeIn('slow'); // pone en verde el cartel antes de mostrarlo
}
en el fail de la petición AJAX:

Código:
 fail:function(jqXHR){
     $('#indicador').removeClass('cargando-satisfactorio').addClass('cargando-error').html(jqXHR.responseText); // quita el verde del cartel, lo pone en rojo y le agrega el texto del error devuelto por el servidor.
}
y en el always, oculto el indicador:
Código:
.always(function() {
                        $('#indicador').fadeOut(4500, function() {
                            $(this).removeClass('cargando-error').html("<span class='glyphicon glyphicon-time'></span> Cargando...");
                        }); // vuelve a restaurar el cartel y lo oculta.
En definitiva establecer la velocidad del fade no me resuelve porque quiero que se tarde el cartel solamente cuando hay error, es decir en el .fail. He probado con setTimeout, pero no l encuentro la vuelta. Penée en poner el retardo en el always, porque algunas veces es necesario en el indicador mostrar la respuesta (un simple mensaje y no toda una vista).
  #2 (permalink)  
Antiguo 11/10/2016, 18:51
 
Fecha de Ingreso: octubre-2007
Mensajes: 273
Antigüedad: 16 años, 5 meses
Puntos: 5
Respuesta: Establecer retardo en cartel cuando fail

La solución que encontré fue la siguiente, y dado que a la función always de la petición AJAX admite un parámentro status, pues básandonos en el mismo, podemos retardar un poco más para el caso de error el fadeOut del indicador, más o menos así:

Código:
.always(function(jqXHR, status){
if (status!== 'success') {
                        $('#indicador').fadeOut(5500, function() {
                            $(this).removeClass('cargando-error').html("<span class='glyphicon glyphicon-time'></span> Cargando...");
                        });
                    } else {
                        $('#indicador').fadeOut('fast', function() {
                            $(this).removeClass('cargando-error').html("<span class='glyphicon glyphicon-time'></span> Cargando...");
                        });
                    }
});

Etiquetas: cartel, establecer, fail, retardo
Atención: Estás leyendo un tema que no tiene actividad desde hace más de 6 MESES, te recomendamos abrir un Nuevo tema en lugar de responder al actual.
Respuesta




La zona horaria es GMT -6. Ahora son las 22:08.