2010-01-06 61 views
5

這是我正在嘗試做的。我有一個網站,可以讓用戶提交在服務提取和處理的Jobs表中排隊的請求。表中有一個狀態列,表示請求是排隊等待處理還是由服務當前處理,或者服務已完成處理請求。整個過程需要幾分鐘的時間。從網頁輪詢數據庫? - ASP.NET

我有一個狀態ASP.NET頁面,我需要在其中實時顯示他們的請求的當前狀態。我想顯示某種動畫並表示當前狀態。我能做到這一點的一種方法是每隔x秒刷新一次元HTTP,以檢查請求的狀態(我想這就是Expedia,Priceline等網站的做法嗎?)

我想阻止一個完整的頁面刷新是可能的,並尋找一個AJAX/JQuery解決方案。我將如何實現這一點?投票是否正確?

回答

4

通過AJAX輪詢是最簡單和最簡單的您的需求。如果你知道所需時間的上限和下限,那麼我可能只會讓動畫運行那段時間,然後爲特殊情況做些事情。

其他人做同樣的:

見:http://news.ycombinator.com/item?id=946165http://www.chrisharrison.net/projects/progressbars/ProgBarHarrison.pdf

+0

你可以詳細說明一下或者指向一個關於如何實現這個的代碼示例嗎? – Nick 2010-01-06 23:34:13

+0

對於輪詢解決方案,請參閱:http://buntin.org/2008/09/23/jquery-polling-plugin/這是一個聊天應用程序,但可以*很容易*適應您的需求。 – 2010-01-06 23:36:31

0

輪詢可能是最好的方法,如果你不想在網頁服務器上連續運行...

但是,如果不打擾你,那麼你可能想看看在[similar answer]我給了另一個問題,允許您動態更新頁面...瀏覽器將顯示繼續「加載」頁面,直到它完成。

0

你有沒有看着異步調用到服務器。這將允許你將呼叫放入服務器,而不是等待結果,當呼叫完成時,事件將被觸發,客戶端頁面上的方法將被觸發,這聽起來像你所需要的,而你不會做輪詢,這裏更多的信息:

http://msdn.microsoft.com/en-us/magazine/cc163725.aspx

希望這有助於。

+0

如果進程需要比會話超時更長的時間,我會不會遇到超時問題? – Nick 2010-01-07 00:53:05

0

你可能想看看「長輪詢」,也被稱爲彗星。

這個想法是,你從客戶端發出一個異步Ajax請求。在服務器端,您將請求掛起,直到某些狀態發生變化(因此它有新的報告)。然後您釋放請求,並返回更新的信息。

這比單純輪詢的優勢在於,請求只在某些事情發生變化時纔會返回。它也可以看起來更具響應性,因爲它主要由服務器端驅動。