2011-10-03 35 views
4

我有一個CGI腳本,它需要很長的時間(30秒)打印出的HTML之前,以產生結果。我想在顯示結果之前顯示一箇中間頁面,其中顯示「正在加載,請稍候......」並帶有動畫GIF。 感謝如何在CGI運行時顯示「等待頁面」?

+0

所以,你應該看看的JavaScript(「阿賈克斯」)。 – home

+0

你應該完全以下降無論你正在做的和使用jQuery(TM):) – DVK

回答

4

叉的過程,並保持在一個會話對它的引用。然後定期輪詢腳本以獲取狀態更新。

有一個more detailed explanation與最初發表在Linux雜誌的代碼示例。 Perl Monks有further discussion

您可以使用JavaScript(和XMLHttpRequest)來做輪詢,而不是重新加載整個頁面(儘管如此,請記住build on things that work)。

+1

+1非AJAXy選項 – DVK

4

簡單的解決方案:讓靜態的html頁面,並且加載文本和GIF,並用JS腳本加載你的CGI腳本XHR。這個庫很簡單,像jQuery這樣的庫和它的ajax輔助函數,如load

0

謝謝你們的幫助,這就是我所做的:

<script type="text/javascript"> 
var ray={ 
ajax:function(st) 
    { 
     this.show('load'); 
    }, 
show:function(el) 
    { 
     this.getID(el).style.display=''; 
    }, 
getID:function(el) 
    { 
     return document.getElementById(el); 
    } 
} 
</script> 
<style type="text/css"> 
#load{ 
position:absolute; 
z-index:1; 
border:3px double #999; 
background:#f7f7f7; 
width:300px; 
height:300px; 
margin-top:-150px; 
margin-left:-150px; 
top:50%; 
left:50%; 
text-align:center; 
line-height:300px; 
font-family:"Trebuchet MS", verdana, arial,tahoma; 
font-size:18pt; 
} 
</style> 
<div id="load" style="display:none;">Loading... Please wait<br/><img src="images/loading.gif"></div> 
<form action="http://localhost/cgi-bin/test.cgi" method="get" onsubmit="return ray.ajax()"> 
<input type="text" value="Test" name="q"> 
<input type="submit" value="Search"> 
</form> 
相關問題