【问题标题】:Realtime progress of AJAX call (asp.net)AJAX调用的实时进度(asp.net)
【发布时间】:2010-04-14 06:57:40
【问题描述】:

我正在尝试制作一个进度条,用于向用户更新 AJAX 调用的进度。

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

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

我只需要一些关于如何做到这一点的指示,如果有人可以帮我吗? ;)

【问题讨论】:

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


    【解决方案1】:

    问题的关键是从服务器获取已完成工作的百分比。唯一的出路是每 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,一个用于启动进程,另一个用于获取状态。

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

    【讨论】:

      猜你喜欢
      • 2013-02-03
      • 1970-01-01
      • 2011-06-29
      • 2023-03-31
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2016-02-01
      • 1970-01-01
      相关资源
      最近更新 更多