Какой хороший способ отобразить загрузочное изображение до завершения запроса ajax?
Прямо сейчас он связывается с сервером каждый раз, когда пользователь переключает "Комментарии (X)"
Я хотел бы сделать так, как только пользователь нажимает ".info .reply" (Комментарии (X)), загрузчик ajax появляется только до завершения загрузки данных, затем загрузчик исчезает.
// Replies - Toggle display of comments
$('.info .reply').click( function() {
$('.reply', this.parentNode.parentNode).toggle();
return false;
});
// Load comments
$('.info .reply', this).mousedown( function() {
var id = $('form #id', this.parentNode.parentNode).val();
$.ajax({ url: location.href, type: 'post', data: 'id=' + id, dataType: 'json',
success: function(data) {
for (var i in data) {
// Do AJAX Updates
}
}
});
return false;
});
Какой правильный способ сделать это?
Спасибо!
2 ответа
Решение
В принципе
Покажите изображение в mousedown, используя show() или fadeIn() или что-то еще, что вам нравится, затем спрячьте его в обратном вызове. Как это
$('.info .reply', this).mousedown( function() {
$("#loading-image").show(); // Show the progress indicator
var id = $('form #id', this.parentNode.parentNode).val();
$.ajax({ url: location.href, type: 'post', data: 'id=' + id, dataType: 'json',
success: function(data) {
$("#loading-image").hide(); // Hide the progress indicator
for (var i in data) {
// Do AJAX Updates
}
}
});
return false;
});
Вы можете использовать плагин, такой как jQuery BlockUI, чтобы сделать это. Просто позвони $.blockUI()
перед звонком $.ajax
, Затем в конце success
событие, звонок $.unblockUI()
,