2011-02-15 29 views
2

我試圖在我的ASP.NET Web窗體應用程序中使用jQuery的進度條。我的目標是這樣的:用的ASP.NET Web jQuery的進度條表格

用戶單擊一個按鈕,然後由ajax發送一個請求,它執行一堆東西(即生成一些PDF)由於這個PDF生成有點費時,我很想擁有一個jQuery進度條能夠及時瞭解總共有多少PDF完成。我將如何着手在AJAX請求上啓動此過程,然後每隔一段時間輪詢一次該過程以瞭解它的過程如何?對於同時使用此應用程序的多個用戶,我需要考慮哪些類型的考慮因素?有時候,我總是把自己的腦袋全部倒在關於瀏覽器應該如何與服務器對話等等,以至於它可能是一個我沒有看到的簡單解決方案。

任何方向將不勝感激。非常感謝您的幫助和時間。

+0

我想也許我可以有過程保持在數據庫中更新記錄,然後直到它完成我的AJAX的查詢可以去查詢這個記錄?我覺得有更好的方法,但也許這是一個體面的解決方案?有什麼想法嗎? – 2011-02-15 18:58:50

回答

1

只是爲了讓有興趣的人張貼着我所做的:

我用一個AJAX調用啓動PDF生成過程。該過程的每個步驟都會更新具有生成狀態的數據庫記錄。然後,我使用javascript setTimeout()調用另一個檢索記錄並顯示當前進度的ajax方法。一旦完成生成,狀態檢查器ajax調用就會停止。

我知道這是不理想的,如果這個網站是爲了讓成千上萬的點擊率,這是一個很大的讀取和寫入到數據庫只是做一個簡單的進度條。這是一個解決方案,在我看來,這不是一個偉大的解決方案,所以如果任何人有他們已經做過的事情,我會更願意去研究它。謝謝大家對此事的幫助和想法。

+1

另一種方法是使用會話。不是檢查數據庫,而是輪詢檢查會話中數據的Web服務。這假設如果你更新一個會話值,它立即可用於其他進程,我不確定。如果不是,那麼你可以使用全局靜態緩存,例如在global.asax.cs中使用某個與用戶會話關聯的id創建一個靜態字典,作爲在進程之間傳遞信息的一種方式。 – 2011-02-18 16:08:50

0

您可以嘗試在單獨的進程中啓動PDF生成,然後使用<asp:Timer>來更新包含進度的頁面,而不是使用jquery進度條。

+0

我想我可以研究一下,我只是覺得這已經完成了,並且有解決這個問題的方法。特別是因爲jQuery現在是ASP.NET項目的一部分。如果沒有,那麼沒有,我只想看看我的選擇。感謝您的意見,我會開始研究,看看它如何適合我的項目。 – 2011-02-15 22:51:55