如何显示“等待页面”当 CGI 运行时?

发布于 2024-12-07 18:05:00 字数 98 浏览 0 评论 0原文

我有一个 cgi 脚本,在打印 html 之前需要很长时间(30 秒)才能生成结果。我想在显示结果之前显示一个带有动画 GIF 的中间页面,其中显示“正在加载,请稍候...”。 谢谢

I have a cgi script that takes long time (30 sec) to generate the results before printing out the html. I want to show an intermediary page that says "Loading, please wait..." with an animated GIF before displaying the results.
Thanks

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(3

凯凯我们等你回来 2024-12-14 18:05:00

分叉该进程并在会话中保留对其的引用。然后定期轮询脚本以获取状态更新。

有一个更详细的解释以及最初发表在 Linux Magazine 上的代码示例。 Perl Monks 有进一步讨论

您可以使用 JavaScript(和 XMLHttpRequest)进行轮询,而不是重新加载整个页面(请记住

Fork the process and keep a reference to it in a session. Then poll the script periodically for a status update.

There is a more detailed explanation with code examples that was originally published in Linux Magazine. Perl Monks has further discussion.

You could use JavaScript (and XMLHttpRequest) to do your polling instead of reloading the whole page (do remember to build on things that work though).

与酒说心事 2024-12-14 18:05:00

简单的解决方案:制作静态 html 页面,使用加载文本和 gif,并使用 JS 脚本加载 CGI 脚本 XHR。使用 jQuery 这样的库及其 ajax 辅助函数(例如 加载

Simple solution: Make static html page, with your loading text and gif, and with an JS script loading your CGI script with XHR. It is very simple with libs like jQuery and its ajax helper functions like load.

彩虹直至黑白 2024-12-14 18:05:00

谢谢大家的帮助,我就是这样做的:

<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>

Thanks guys for the help, this what I did:

<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>
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文