Ver Mensaje Individual
  #1 (permalink)  
Antiguo 04/10/2016, 15:06
X_fran
 
Fecha de Ingreso: octubre-2007
Mensajes: 273
Antigüedad: 16 años, 6 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).