Возможно, попробуйте использовать глобальные события ajaxStart и ajaxStop для вашего занятого символа.
Например:
$("#busysymbol").ajaxStart(function(){
$(this).show();
});
$("#busysymbol").ajaxStop(function(){
$(this).hide();
});
в начале вашего кода и удалите скрытие и отображение из ваших определенных обработчиков .ajax ().
О, я только что заметил, что вы используете синхронные запросы, так что это даже не AJAX - больше похоже на SJAX. У вас есть очень веская причина полностью заблокировать пользовательский интерфейс вашего браузера, пока вы ожидаете, пока запрос не будет завершен или истекло время ожидания? Если нет, попробуйте использовать что-то вроде этого:
$("#busysymbol").hide();
$("#busysymbol").ajaxStart(function(){
$(this).show();
});
$("#busysymbol").ajaxStop(function(){
$(this).hide();
});
var resp = $.ajax({url: "book_ajax.php?req=daysformonth&month=1",
cache: false,
success: function (resp) {
var daysInMonth = resp.split(",");
...etc...
}
});
(не проверено)
Попробуйте, если он работает без изменения положения #busysymbol, а затем попробуйте добавить правильное расположение в самом начале. Имейте в виду, что .position()
не принимает аргументы, поэтому самая длинная строка в вашем коде на самом деле ничего не делала - см. документы . Что вам нужно, это .offset()
или .css()
.