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).