Если вы используете jQuery 1.5, вы можете сделать это красиво, ненавязчиво и в целом с помощью префильтра . Давайте сделаем очень простой плагин для этого:
(function($) {
var animations = {};
$.ajaxPrefilter(function( options, _, jqXHR ) {
var animation = options.animation && animations[ options.animation ];
if ( animation ) {
animation.start();
jqXHR.then( animation.stop, animation.stop );
}
});
$.ajaxAnimation = function( name, object ) {
if ( object ) {
loadingAnimations[ name ] = object;
}
return loadingAnimations[ name ];
};
})( jQuery );
Вы устанавливаете анимацию следующим образом:
jQuery.ajaxAnimation( "spinner" , {
start: function() {
// code that starts the animation
}
stop: function() {
// code that stops the animation
}
} );
затем вы указываете анимацию в опциях ajax:
jQuery.ajax({
type: "POST",
url: "/game-checkin",
data: dataString,
animation: "spinner",
success: function() {
// your success code here
}
});
и префильтр обеспечит запуск и остановку анимации "spinner".
Конечно, таким образом, вы можете установить альтернативную анимацию и выбрать ту, которая вам нужна для каждого запроса. Вы даже можете установить анимацию по умолчанию для всех запросов, используя ajaxSetup:
jQuery.ajaxSetup({
animation: "spinner"
});