2010-04-14 17 views
3

我正在嘗試使進度條更新用戶對AJAX調用的進度。AJAX調用的實時進度(asp.net)

我的直接想法是,我需要一個AJAX調用來啓動服務器上的一個線程,允許啓動AJAX調用完成,並允許線程發送更新回給用戶。

爲了簡單起見,忽略了實際的進度條功能(我正在考慮實現其中一個JS工具欄,它帶有奇特的顏色和效果;),但是如果我可以從線程獲取更新,那麼更新簡單的JS進度條變得微不足道))

我只需要幾個關於如何做到這一點的指針,如果有人可以強制我? ;)

回答

2

問題的癥結在於獲得從服務器完成的工作的百分比。唯一的出路是每隔x秒輪詢一次服務器。有幾種方法,

  1. 用ajax啓動一個httphandler(同步或異步)調用。
  2. [輪詢]使用ASP.NET timer control每隔x秒刷新一次更新面板。

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 } 
     }); 
} 

因此,您將有兩個httphandlers,一個啓動進程以獲取其狀態。

你可以研究這些,看看有什麼更適合你。