Показывать "в процессе" во время выполнения http-запроса (длительного выполнения) в javascript / jquery / php - PullRequest
0 голосов
/ 28 февраля 2012

Я хотел бы получить сообщение "Идет загрузка ..." / "Выполняется ..." во время обычного http-запроса.Это должно быть показано только во время цикла http-запроса, и как только вы получите запрос, завершенный и получите ответ, он должен отключиться.Я заинтересован в регулярных HTTP-запросах и HTTP-запросах, которые занимают больше времени, а не в AJAX.Блоки кода, примеры, указатели оценены.Вот один из подходов, я хотел бы использовать общий подход, чтобы его можно было использовать для любого http-запроса.

Ответы [ 4 ]

1 голос
/ 28 февраля 2012

Вы должны использовать beforeSend и завершить события:

$.ajax({
   ...
   beforeSend: function(){
      //Here you loading SHOW

   },
   complete: function(){
     //Here you loading HIDE

   }
   ...
});
0 голосов
/ 21 августа 2012

Я думаю, что невозможно сделать какую-либо информацию во время синхронного вызова HTTPRequest на чистом javascript (не так в JQuery).Если вы измените стиль, класс .. непосредственно перед вызовом метода send, эта информация не будет отображена.

Чтобы устранить эту проблему, я изменил вызов на асинхронный вызов, тогда изменения стиля, класса .. могутбудет обработан до возврата вызова (используя onreadystatechange для получения результата и сброса стиля)

0 голосов
/ 28 февраля 2012

У вас может быть элемент на странице, который будет скрыт после полной загрузки страницы. E.g.:

<img id="loading" src="loading.gif" alt="Loading..." />

<script type="text/javascript">

$(function() {
  $('img#loading').hide(); // Called when whole page has been loaded
});

</script>
0 голосов
/ 28 февраля 2012

В основном при выполнении обычного HTTP-запроса (не AJAX) браузер клиента уже предоставляет индикатор выполнения.Этот индикатор может отличаться в зависимости от браузера и платформы, и вы не можете полагаться на него.

Ваш javascript перестает работать, когда вы уходите со страницы, поэтому не ищите решение javascript для отображения такого индикатора прогресса.В зависимости от того, как запущен этот HTTP-запрос, могут быть разные способы достижения этого.Например, если у вас есть разметочный тег в разметке, который запускает обычный HTTP-запрос, вы можете подписаться на обработчик щелчков этого якоря и показать анимированный счетчик, используя javascript, а затем позволить браузеру выполнить перенаправление.

А что касается запросов AJAX, вы можете подписаться на глобальные обработчики .ajaxStart() и .ajaxComplete(), чтобы соответственно отображать и скрывать некоторые счетчики.

Конечно, все будет зависеть от реализации.Там нет волшебного решения, которое будет обрабатывать все возможные случаи.Поэтому в основном вам нужно будет найти решение, адаптированное к вашему конкретному контексту, которое, к сожалению, вы не детализировали.

...