http / html / ajax:在网站完全处理之前显示结果

时间:2010-04-01 21:20:38

标签: html ajax cgi

我正在寻找一种方法,在任务前面的webapp中显示一条等待消息,然后隐藏消息。任务运行时间较长。我根本不知道是否有可能。

到目前为止,我可以看到问题是,在任务完成后,该站点将返回给用户浏览器,因为任务是站点的一部分,因为内联代码由Web服务器解释器替换(无论PHP是否,Perl或其他)。

我能想象的唯一解决方案是将任务与线程或进程并行,并使用网站中的ajax重新查询状态。

任何想法都不那么复杂吗?谢谢你的帮助!

3 个答案:

答案 0 :(得分:0)

一旦代码开始执行,服务器应该开始向浏览器发送内容;它不会等待服务器端代码先完成。

因此,您可以在呈现包含等待消息的HTML后运行任务。完成任务后,您可以呈现隐藏等待消息的<script>块。

答案 1 :(得分: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>

答案 2 :(得分:0)

Watching long processes through CGI。您可以使用相同的技术来使用AJAX调用来显示更新。