2010-04-22 2 views
1

Как вы показываете ajax gif только для конкретного запроса? Например, моя страница вызывает веб-сервис каждые 30 секунд в фоновом режиме, и я не хочу показывать gif во время этого обратного вызова. С другой стороны, я хочу показать gif, когда я делаю ручные запросы ajax.Как показать ajax gif только для конкретного запроса?

Я использую jQuery.

Редактировать: Я не настроил глобальный обработчик, как показано здесь http://api.jquery.com/ajaxStart/, просто присоединившись к событию .ajaxStart. Но я не хочу показывать/скрывать gif вручную по каждому запросу. Мне нужно какое-то общее решение.

+0

Можете ли вы предоставить немного больше информации? Где в вашем jQuery вы настраиваете эту загрузочную анимацию? Очень полезен фрагмент кода или два кода. – justkt

ответ

2
$('#manualRefresh').click(function(){ 
    $('#myContainer').html('<img src="my-ajax-gif.gif">'); 
    $.get(..., function(data){ ('#myContainer').html(data) }); 
}); 

Нравится?

+0

спасибо, Бен, но, пожалуйста, см. Мой отредактированный вопрос. Мне нужно некоторое общее решение, не нужно дублировать код show/hide при каждом запросе. –

+0

Как насчет того, чтобы использовать анонимную функцию, предоставленную Беном, и обернуть ее функцией (или плагином, если вам это нужно во многих местах), который показывает ваш gif и отправляет ваш запрос? – justkt

+0

Вы правы, KISS как есть. спасибо, Бен, спасибо, justkt. –

1

Пожалуйста, попробуйте следующее:

$('#save').click(function(){ 
    $('#ShowLoading').show(); 
    $.ajax(..., success:function(data){....$('#ShowLoading').hide();}, 
      error:function(){....$('#ShowLoading').hide();}); 
}); 

НТН

0

Я использую BlockUI plugin, делает это довольно легко на самом деле. Это простая функция упаковщик я написал какое-то демо-код:

function wjBlockUI(msg) { 

var defaultMsg = '<img src="../images/activity.gif" />'; 

if (null !== msg) { 
    defaultMsg = msg 
} 

$.blockUI({ overlayCSS: { backgroundColor: '#aaa' }, message: defaultMsg }); 

}

Смежные вопросы