AJAX调用的实时进度(asp.net)

时间:2010-04-14 06:57:41

标签: c# asp.net ajax asp.net-ajax progress

我正在尝试创建一个进度条,用于更新用户对AJAX调用的进度。

我的直接想法是我需要一个AJAX调用来启动服务器上的一个线程,允许启动AJAX调用,并允许线程将更新发送回用户。

为了简单起见,忽略了实际的进度条功能(我正在考虑实现其中一个JS条,带有奇特的颜色和效果;)但是如果我可以从线程获得更新,那么更新一个简单的JS进度条变得微不足道;))

如果有人可以强迫我,我只需要一些关于如何实现这一点的指示? ;)

1 个答案:

答案 0 :(得分:3)

问题的症结在于从服务器获得完成工作的百分比。唯一的出路是每隔x秒轮询一次服务器。有几种方法,

  1. 使用ajax启动httphandler(同步或异步)调用。
  2. [轮询]每隔x秒使用ASP.NET timer control刷新更新面板。
  3. OR

    http://encosia.com/2007/07/25/display-data-updates-in-real-time-with-ajax/

    或者使用jquery进行轮询。

    以“t”间隔轮询服务器并获取状态。为此,我们需要在't'时间间隔调用一个函数,该函数将启动对HTTPHandler的AJAX调用以获取状态。

    $(function() { 
      setInterval(update, 't'); 
    }); 
    
    function updateStatus() { 
      $.ajax({ type: "POST",  url: "GetStatusHandler.ashx", 
           contentType: "text/html; charset=utf-8", 
           dataType: "html",   
           success: function(data) { UpdateStatus - Update some progressbar plugin } 
           }); 
    } 
    

    因此,您将拥有两个httphandler,一个用于启动其他进程以获取状态。

    你可以研究这些,看看哪些更适合你。