Итак, я новичок в Ajax. У меня есть панель мастера ASP.NET, завернутая в панель обновления ASP Ajax. Ajax работает хорошо, страница выполняет частичные обновления, пока вы шагаете по мастеру. Я даже запускаю анимированные GIF-изображения с помощью библиотеки jQuery unblockUI.js, чтобы предотвратить отправку нескольких страниц. Чего я не могу понять, так это того, что при первой загрузке страницы панели мастера первоначально требуется около минуты для загрузки из-за длинного вызова базы данных. Это не асинхронный постбэк, поэтому мой анимированный GIF не срабатывает. На самом деле, я просто получаю песочные часы, пока страница загружается. Есть ли способ пойти дальше и загрузить остальную часть содержимого страницы и отобразить этот gif, пока действует минутный вызов базы данных? Я пытался переместить вызов БД после загрузки страницы, но он все еще делает это при начальной загрузке страницы, и я не могу сделать это асинхронно.
Опять же, я новичок в асинхронных вещах. Кажется, это должно быть просто, но я застрял.
Обновление:
Хорошо, для меня сложнее было понять, как выполнить загрузку данных с помощью вызова Ajax. У меня практически нет опыта с этим. Это может быть препятствием, но на самом деле он работает довольно хорошо без слишком большого количества нового кода:
Я переместил загрузку данных из загрузки страницы в событие Load моего UpdatePanel, но поместил его в If IsPostBack. Это тот же код, что и раньше, но теперь работает только с обратной передачей. Затем в своей разметке я поместил это (спасибо ответу ниже):
$(document).ready(function()
{
__doPostBack('<%= Me.UpdatePanel1.ClientID %>', '');
});
Я просто показываю ожидающий div по умолчанию и скрываю его в части If IsPostback после загрузки данных. Мне пришлось возиться с некоторой логикой сокрытия управления (кнопки «Назад» и «Продолжить» для мастера, div loading.gif и т. Д.), Но выше был только новый код.