在javascript / jquery / php中执行http请求(长时间运行)期间显示“进行中”

时间:2012-02-27 20:32:49

标签: javascript jquery progress

我希望在常规http请求期间有“正在加载...”/“正在进行...”消息。这应该只在http请求周期中显示,一旦你完成请求并得到响应,它应该会响起。我热衷于常规的HTTP请求,以及需要更长时间而不是AJAX的HTTP请求。代码块,示例,指针赞赏。这是一种方法,我希望有一个共同的方法,以便它可以用于任何http请求。

4 个答案:

答案 0 :(得分:1)

你应该使用beforeSend和complete事件:

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

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

   }
   ...
});

答案 1 :(得分:0)

基本上,当执行普通的HTTP请求(不是AJAX)时,客户端浏览器已经提供了进度指示器。此指标因浏览器和平台而异,您不能依赖它。

一旦离开页面,你的javascript就会停止工作,所以不要寻找一个javascript解决方案来显示这样的进度指示器。根据此HTTP请求的触发方式,可能有不同的方法来实现。例如,如果标记中有一个锚标记触发正常的HTTP请求,您可以订阅此锚点的单击处理程序并使用javascript显示动画微调器,然后让浏览器执行重定向。

就AJAX请求而言,您可以订阅.ajaxStart().ajaxComplete()全局处理程序来分别显示和隐藏一些微调器。

当然,一切都取决于实施。没有神奇的解决方案可以处理所有可能的情况。所以基本上你必须找到一个适合你特定环境的解决方案,遗憾的是你还没有详细说明。

答案 2 :(得分:0)

页面完全加载后,页面上可能会隐藏一个元素。 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>

答案 3 :(得分:0)

我认为在纯javascript HTTPRequest同步调用期间不可能呈现任何信息(在JQuery中不是这种情况)。如果在调用send方法之前更改样式,类..,则不会呈现此信息。

要解决此问题,我将调用更改为异步调用,然后可以在调用返回之前呈现样式,类..更改(使用onreadystatechange获取结果并重置样式)