Как отобразить «страницу ожидания» во время работы CGI? - PullRequest
4 голосов
/ 03 октября 2011

У меня есть скрипт cgi, который занимает много времени (30 секунд) для генерации результатов перед распечаткой HTML.Я хочу показать промежуточную страницу с надписью «Идет загрузка, подождите ...» с анимированным GIF-файлом перед отображением результатов.Спасибо

Ответы [ 3 ]

4 голосов
/ 03 октября 2011

Простое решение: создайте статическую HTML-страницу с загрузкой текста и gif, а также с помощью JS-скрипта, загружающего ваш CGI-скрипт с помощью XHR .Это очень просто с библиотеками вроде jQuery и его вспомогательными функциями ajax, такими как load .

4 голосов
/ 03 октября 2011

Разветвите процесс и сохраните ссылку на него в сеансе. Затем периодически опрашивайте скрипт на предмет обновления статуса.

Существует более подробное объяснение с примерами кода, которое было первоначально опубликовано в журнале Linux. У Perl Monks есть дальнейшее обсуждение .

Вы можете использовать JavaScript (и XMLHttpRequest) для проведения опроса вместо перезагрузки всей страницы (не забудьте опираться на вещи, которые работают , хотя).

1 голос
/ 09 октября 2011

Спасибо, ребята за помощь, вот что я сделал:

<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>
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...