JQuery AJAX получает состояние XMLHttpRequest
Вместо типичного "Загрузка..." или анимированного GIF, я хочу показать лучшее описание того, что происходит. (Вроде как, что делают некоторые заставки для приложений). Однако, взглянув на документацию Jquery, кажется, не существует способа получить изменение в состоянии XMLHttpRequest.
То, что я хотел бы сделать, это что-то вроде этого
если case = 1, отобразить "Запуск"
если case = 2, отобразить "Получение ближе"
если case = 3, отобразится "Я почти у цели"
если регистр = 4 отображать содержимое
Я что-то упускаю или я должен отказаться от ajax-методов jquery и написать свои собственные?
1 ответ
Вам необходимо опросить веб-службу через определенные промежутки времени и просто вернуть то, что кажется подходящим для вашего приложения (например, сообщения, которые вы представили) и обновить индикатор прогресса. Процесс состоит из двух частей: первый шаг заключается в фактическом запуске операции, которая должна выполняться, а второй шаг - в постоянном опросе сервера, чтобы узнать, завершена ли операция.
Однако вам придется каким-то образом сохранять текущее рабочее состояние на сервере. Я не знаю, с какой технологией вы работаете, поэтому я могу только сказать вам использовать что-то, что обеспечивает выбранный вами фреймворк, но убедитесь, что состояние процесса установлено в переменной, которая может быть сохранена (HTTP не имеет состояния), в примере в переменной сеанса. Синхронизация этого значения между запущенным процессом и методом опроса может быть сложной.
В целом, такие заставки используются скорее в настольных приложениях или в веб-приложениях, когда обработка выполняется на клиенте. Я не думаю, что это хорошая идея, чтобы попытаться выполнить обновление, когда метод, который вы запускаете асинхронно, находится на сервере. Такой индикатор прогресса будет полезен, когда вы загружаете ресурсы (например, изображения или другие файлы), и вы можете посчитать загруженные в данный момент элементы / размер по сравнению с общим размером и так далее. Независимо от того, будет ли операция обработки вызываться на сервере или на клиенте, она должна быть исчисляемой...
Если вам не нужен еще один скучный индикатор "Загрузка..." в веб-приложении, вы можете случайно отобразить некоторые забавные цитаты или другие тексты из массива.
Лучшее решение - минимизировать время, необходимое для обработки запроса.:)