2009-04-02 1 views
1

Вместо типичного «Loading ...» или анимированного gif, я хочу показать лучшее описание того, что происходит. (Похоже, что некоторые экраны заставки делают для приложений). Однако, взглянув на документацию JQuery, похоже, нет способа получить изменения в состоянии XMLHttpRequest.JQuery ajax получает состояние XMLHttpRequest

То, что я хотел бы сделать что-то вроде этого

если случай = 1 дисплей "Запуск"

если случай = 2 дисплей "ближе"

если случай = 3 дисплей «I «м почти там»

если содержание случая = 4 дисплея

Am I с видом на что-то или я должен отказаться от АЯКС методы Jquery и написать мои собственные?

ответ

0

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

Однако вам необходимо как-то сохранить текущий статус операции на сервере. Я не знаю, с какой технологией вы работаете, поэтому я могу только сказать вам использовать что-то, что предлагает ваша инфраструктура выбора, но убедитесь, что состояние процесса задано в переменной, которая может быть сохранена (HTTP является апатридом) в примере в переменной сеанса. Синхронизация этого значения между запущенным процессом и методом опроса может быть сложной задачей.

В целом такие всплеск-экраны используются в настольных приложениях или в веб-приложениях, когда обработка выполняется на клиенте. Я не думаю, что это хорошая идея, чтобы попытаться добиться прогресса обновления, когда метод, который вы выполняете асинхронно, находится на сервере. Индикатор прогресса, подобный этому, был бы хорош, когда вы загружаете активы (например, изображения или другие файлы), и вы можете подсчитать загруженные в данный момент элементы/размер по сравнению с общим размером и так далее. Независимо от того, будет ли операция обработки вызываться на сервере или на клиенте, она должна быть счетной ...

Если вы не хотите показывать еще один тупой индикатор «Загрузка ...» в своем веб-приложении, вы можете случайным образом отображать некоторые смешные кавычки или другие тексты из массива.

Лучшее решение - свести к минимуму время, затрачиваемое на обработку запроса. :)

+0

Спасибо за отличный совет. Вы затронули то, о чем я действительно не думал; это время, которое потребуется для опроса и повторения. Большое спасибо. – Scott

+0

Нет проблем. Я рад, что могу помочь. Кроме того, я забыл упомянуть, что постоянный опрос сервера также поглощает его ресурсы - вы делаете много «ненужных» вызовов, пока сервер что-то обрабатывает. Теперь подумайте, что у вас столько пользователей, сколько StackOverflow. :) –

 Смежные вопросы

  • Нет связанных вопросов^_^