Чтобы иметь индикатор во время выполнения ajax-запроса, я получил информацию о том, что мне нужно иметь индикатор с анимированным gif, помещенным в элемент страницы, а затем при успешном выполнении функции ajax заменить данные.
Если я добавлю источник индикатора с помощью src = "ajax-loader.html", вызов ajax оставляет его на месте и не заменяет его данными.Если я добавлю источник индикатора с помощью .load («ajax-loader.html»), то перед вызовом ajax он вообще не будет показан.Если я добавлю его в вызов ajax в событии beforesend, он тоже не будет показан.Если я сделаю два вызова ajax, один для загрузки индикатора, другой для загрузки данных, произойдет то же самое.Должен быть способ показать индикатор в этом простом коде.
Это HTML-код для элемента страницы.
<iframe id="lcupco" style="position: relative; top: 5px; width: 100%; height: 200px; border: 2px solid grey; margin-bottom: 15px;"></iframe>
Это HTML-код для индикатора.
<html>
<head></head>
<body>
<img src='images/ajax-loader.gif'/>
</body>
</html>
Это код
Вызов .load
$(document).ready(function(){
$('#lcupco').load("ajax-loader.html");});
$.ajax({
url: 'luxcal/index.php?cP=40',
cache: false,
async: true,
success: function(data) {
$('#lcupco').html(data);
},
});
Использование beforesend
`
$.ajax({
url: 'luxcal/index.php?cP=40',
cache: false,
async: true,
beforeSend: function() {
$('#lcupco').load('ajax-loader.html');
// $('#lcupco').html('<html>Initializing calendar...</html>'); //simple text didn't load either.
},
success: function(data) {
$('#lcupco').html(data);
},
});
- Использование двух вызовов ajax: один для индикатора и один для данных
`
$.ajax({
url: 'ajax-loader.html',
cache: false,
async: true,
success: function(data) {
$('#lcupco').html(data);
},
});
$.ajax({
url: 'luxcal/index.php?cP=40',
cache: false,
async: true,
beforeSend: function() {
$('#lcupco').html('<html>Initializing calendar...</html>');
},
success: function(data) {
$('#lcupco').html(data);
},
});
`