2010-04-01 41 views
1

我正在尋找一種方式,在任務前的web應用程序中顯示一個等待消息,並在其隱藏消息之後。任務運行時間更長。我不知道這是否可能。http/html/ajax:顯示網站完全處理前的結果

問題是,到目前爲止,我可以看到,該網站將返回到用戶瀏覽器後,任務完成,因爲該任務是網站的一部分,作爲內嵌代碼由Web服務器解釋器替換(不管是否PHP,Perl或其他)。

我能想到的唯一解決方案是將任務與線程或進程並行並在網站中查詢與ajax的狀態。

任何想法做它不那麼複雜?感謝幫助!

+0

我的理解是,當發送請求時顯示加載條,然後在從服務器獲得響應後隱藏加載消息,則您面臨的問題是加載消息在任務或請求完成之前消失。 是你的嗎? – Kronass 2010-04-01 21:28:45

回答

0

只要代碼開始執行,服務器應該開始向瀏覽器發送內容;它不會等待服務器端代碼先完成。

因此,您可以在渲染包含等待消息的HTML之後運行任務。完成任務後,您可以渲染隱藏等待消息的<script>塊。

+0

我試過了,但沒有奏效。我認爲瀏覽器不會在網站結束前開始顯示。 – chris 2010-04-01 21:25:44

+0

它適合我。你在用什麼語言?它是否有緩衝選項或「flush」方法? – SLaks 2010-04-01 21:28:43

+0

你正在運行CGI嗎?除非你使用fastCGI或somthing,否則php不會以cgi模式流。 – 2010-04-01 21:29:53

0

幾種方法可以做到這一點:

1)拉出的任務到自己的文件,所以它不是內聯。然後使用異步AJAX來查詢任務。在事件發生時顯示進度條,並在完成時隱藏它。

2)確保您正在將數據傳輸回瀏覽器(這是PHP中的默認設置)。 如果您將php作爲CGI運行,它將在返回任何內容之前執行整個腳本。在這種情況下,你將不得不o#1把內聯任務作爲最後的東西在頁面上。在現在內聯任務的地方,放置一個<div id=loading>Content Loading Please Wait</div>或微調器/進度條。

奪聯任務的輸出到一個PHP變量在任務結束時添加<script>document.getElementById('loading').innerHTML ="$taskResult";</script>

+0

我試過了。這不會顯示我的等待分區。 。 ------------------

%sleep(10); ------------------------------------ – chris 2010-04-01 21:32:16