#jquery
#jquery
Вопрос:
Следующий код загружает page-handler.php в #page при запуске функции load и во время ожидания отображается ajax_load. Как я могу сделать так, чтобы отправляющее сообщение ajax_load отображалось в другом div и, конечно, исчезало по завершении отправки?
function load(value) {
$('#page').html(ajax_load);
$("#page").load("page-handler.php", {page:value});
return false;
}
Комментарии:
1. вау, все дали один и тот же ответ менее чем за минуту
Ответ №1:
Вы начинаете с создания скрытого div с загрузочным сообщением:
<div id="loading">loading...</div>
Затем в вашей функции:
function load(value) {
$('#loading').show();
$('#page').html(ajax_load);
$("#page").load("page-handler.php", {page:value}, function(){
$('#loading').hide();
});
return false;
}
конечно, вы должны что-то сделать, если вызов ajax не удался.
Ответ №2:
function load(value) {
$('somediv').html(ajax_load);
$("#page").load("page-handler.php", {page:value}, function() {
$('somediv').empty(); // or set new contents, or hide, or whatever
});
return false;
}
Это поместит содержимое во все, что имеет идентификатор ‘somediv’. Вы можете использовать класс ( '.class'
) или несколько других селекторов для выбора вашего div.
Комментарии:
1. все решения этого типа пока работают, вы были первыми с решением, которое я в итоге использовал, спасибо
2. @Джозеф — посмотри и ответ Винсента, пожалуйста 🙂
Ответ №3:
Рассмотрите возможность использования $ (‘#selector’).ajaxStart() и $ (‘#selector’).ajaxStop();
Ответ №4:
Покажите div перед началом вашего вызова и скройте его при обратном вызове, например:
function load(value) {
$('#busydiv').show(); // shows busy indicator
$('#page').html(ajax_load);
$("#page").load("page-handler.php", {page:value}, function() {
$('#busydiv').hide();
});
return false;
}
Ответ №5:
Итак, я думаю, это то, что вы хотите?
$("#anotherDiv").html(message);
$("#page").load("page-handler.php", {page:value}, function(){$("#anotherDiv").hide();});
Это скроет другой div при загрузке ajax.