Лучший способ отобразить gif загрузки во время процесса вызова базы данных при первой загрузке страницы - PullRequest
0 голосов
/ 14 октября 2009

Итак, я новичок в 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 и т. Д.), Но выше был только новый код.

1 Ответ

2 голосов
/ 14 октября 2009

Как правило, я представляю вращающуюся или достаточно показательную анимацию загрузки до вызова ajax. Если начальная загрузка страницы длится вечно, вы можете вместо этого запустить длительный процесс с помощью вызова ajax в вашем $ (document) .ready (... function:

$(document).ready(function() {
    $('#someId').html('<img src="loading.gif"/>').load('complex.aspx');
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...