代码之家  ›  专栏  ›  技术社区  ›  Dynde

Ajax调用的实时进度(ASP.NET)

  •  3
  • Dynde  · 技术社区  · 14 年前

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

    我立即想到,我需要一个Ajax调用来启动服务器上的一个线程,允许启动Ajax调用完成,并允许线程将更新发送回用户。

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

    如果有人愿意的话,我只需要一些关于如何完成这一点的建议?;)

    1 回复  |  直到 14 年前
        1
  •  3
  •   A G    14 年前

    问题的关键是从服务器获取已完成工作的百分比。唯一的出路是每隔X秒轮询一次服务器。有几种方法,

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

    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,一个用于启动进程,另一个用于获取状态。

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