Лучший подход для использования загрузчиков AJAX? - PullRequest
2 голосов
/ 11 октября 2008

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

Ответы [ 2 ]

2 голосов
/ 11 октября 2008

Некоторые библиотеки 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);

Затем запишите каждый тип подклассов и покажите или спрячьте различную графику загрузчика.

К сожалению, нет быстрого решения, хэл. Вы можете создать общий сценарий для добавления графики загрузчика в контейнеры, что должно сэкономить вам некоторое повторение. Если вы это сделаете, не забудьте опубликовать это здесь:)?

0 голосов
/ 11 октября 2008

Вы можете использовать индикатор выполнения JQuery или что-то подобное в другой библиотеке.

...