Y va el joven @jmoreno78, se pone y dice: “Maestro, es recomendable indicar que se está cargando una combo vía ajax mediante un engranaje girando o algo así?”
Si lo haces rapidito no. Pero si pasas de 2-3sg es conveniente. Una forma de hacerlo es creando un objeto con sólo dos métodos, start() y stop(). Llamas al start antes de tu ajax y al stop() cuando tienes el resultado. El truco está en que, internamente, sólo se muestra el loader si han pasado dos segundos.
El código usa el loader de jQuery Mobile. Sólo hay que cambiar las llamadas a $.mobile.loading() por el código correspondiente a la librería que se use.
var Loader = { showLoading: 0, start : function (numWhen) { if(!this.showLoading) { this.showLoading = setTimeout( function() { $.mobile.loading('show'); }, numWhen || 2000); } }, stop : function () { if(this.showLoading) { clearTimeout(this.showLoading); $.mobile.loading('hide'); this.showLoading = 0; } } };
Usándose tal que…
Loader.start(); $.getJSON( this.url, objParams) .done( do something... Loader.stop(); ) .fail(
do something... Loader.stop(); );