Я реализовал несколько плохих решений для вызова загрузчика AJAX перед динамическим обновлением DIV содержимого, но ни одно из них не кажется «универсальным», и каждый раз, когда я это делаю, я переделываю его. Если у меня есть DIV с контентом, который обновляется в зависимости от того, что пользователь нажимает на странице, и я хочу отобразить загрузчик поверх этого DIV контента, каков наилучший подход? Я видел, как у некоторых разработчиков загрузчик всегда был на странице, и они просто отображали его в блоке или без него, и я видел, как другие добавляли его в DIV. А что если у вас есть несколько областей, которые можно обновлять? Я думаю о чем-то повторяющемся, что я могу вызвать с помощью функции, возможно, передав несколько параметров.





Вы можете использовать Индикатор выполнения JQuery или что-то подобное в другой библиотеке.
Некоторые библиотеки JavaScript позволяют прослушивать запросы открытия и закрытия. Ознакомьтесь с ответом на запрос прототипа http://www.prototypejs.org/api/ajax/responders.
Вы бы сделали что-то вроде этого:
Ajax.Responders.register({
onCreate: function() {
$('loader').show();
Ajax.activeRequestCount++;
},
onComplete: function() {
Ajax.activeRequestCount--;
if (Ajax.activeRequestCount < 1) $('loader').hide();
}
});
Что касается визуального представления загрузки, вы можете захотеть идентифицировать различные части вашей страницы, которые могут потребовать отдельной загружаемой графики, и создать подкласс объекта Request, каждый раз указывая тип запроса.
Например,
Это поле сохраняется? new FieldUpdateRequest(field)
Это страница загружается? new Request();
Контейнер обновляется? new PartialRequest(div);
Затем захватите каждый тип подкласса и покажите или скройте другой рисунок загрузчика.
К сожалению, быстрого решения нет, Хэл. Вы можете создать общий скрипт для добавления графики загрузчика к контейнерам, что избавит вас от лишних повторов. Если да, то разместите это здесь :)?
Это был отличный ответ. Спасибо за все подробности.