2011-06-02 386 views
0

我有一個Web應用程序,一些頁面需要相當長的時間來加載,因爲他們必須在代碼後面做什麼。我想通過顯示過程的不同狀態來顯示用戶正在進行的操作。同時頁面加載和ajax調用

我在考慮遞歸調用(通過ajax)一個在會話中準備好值的頁面。該值由需要時間加載的頁面設置。 問題是,當其他頁面加載完成時,不會執行由ajax調用的頁面。 有沒有辦法做到這一點?

感謝推進

+0

他們需要多長時間?你在做什麼服務器端,你打算如何移動客戶端? – 2011-06-02 15:39:51

+0

可能需要幾分鐘時間才能繼續。在服務器端,我有一個數據庫包含文件,這是我需要檢索到客戶端的文件。 – mrso 2011-06-03 17:16:28

回答

0

這裏的通常模式是加載觸發一個AJAX調用來檢索頁面的最終版本,覆蓋原來的與你的AJAX調用的結果是完成時的初始狀態頁。

+0

如果頁面的最終版本結果爲要下載的文件(標題內容類型更改),該怎麼辦? – mrso 2011-06-02 18:39:37

+0

然後返回一個包含用戶可以下載文件的鏈接的頁面。 – 2011-06-02 19:02:26

+0

不幸的是我不能這樣做,該文件不是物理上在服務器上,而是在數據庫中。 – mrso 2011-06-02 20:54:23

0

將頁面加載時需要很長時間的代碼部分分開並稱爲異步(例如,作爲WebMethod)。如果使用jQuery,請致電document.ready。您也可以使用設置爲條件刷新的UpdatePanel來僞造該代碼,並且代碼從不默認運行。然後使用__doPostBack('updatePanelUniqueID','')從腳本中刷新它。

+0

我試過你的解決方案,但它似乎不工作,ajax代碼不斷調用,但後面的代碼不會執行,而另一個加載。 – mrso 2011-06-02 18:47:39

+0

哪一個?你能否更新這個問題,並提供一些你如何實現的細節? – 2011-06-02 19:16:29

+0

我已經嘗試了兩種方法,第一種方法是將方法放入Web服務(位於同一網站中),並從加載時間較長的頁面中調用該方法。對於第二個,我已將updatepanel插入到「主」頁面中,並通過__doPostBack進行刷新。在updatepanel中,我只是添加了一個方法來調用頁面後面的代碼來讀取會話。 – mrso 2011-06-02 20:50:08