yo la empiezo de la siguiente forma en la petición AJAX:
Código:
en el fail de la petición AJAX:beforeSend:function(){ $('#indicador').addClass('cargando-satisfactorio').fadeIn('slow'); // pone en verde el cartel antes de mostrarlo }
Código:
y en el always, oculto el indicador: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. }
Código:
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). .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.