如何使用CGI Perl在标题之前打印页面加载消息

时间:2016-04-05 15:34:54

标签: html perl cgi

我想在我的网页的实际内容与标题加载之前显示一条消息,上面写着“正在加载...请等待”。但是在Apache 2.2.15上,如果不首先打印标题,则不会显示任何打印消息。以下是代码: (Perl版本5.14.1,CGI版本:3.52):

use CGI;

use CGI::Carp qw(fatalsToBrowser);

#print "Content-type:text/html\n\n";
print '<pre>'. " This is before header"  .'</pre>';
print qq[<DIV id="loading" style="position:absolute; font-family:arial; 
font-size:16; left:0px; top:0px; background-color:red; layer-background- 
color:white; height:100%; width:100%;">
<TABLE width=100%><TR><TD><B>Loading... Please wait!</B></TD></TR></TABLE>

</DIV>];



my $q = CGI->new;
print $q->header();

print $q->start_html();

warn "this is test header issue script \n";
print "Hello Everybody .. !";
print $q->end_html();

如果我在顶部打印'content-type:text / html',那么我可以显示加载消息,但是也会在顶部打印出我不想要的内容类型。
是否有Perl方法来实现这一目标?
这只是我实际代码的简短示例,因此在打印加载消息后,代码的控制将不再进一步,请忽略它。

1 个答案:

答案 0 :(得分:2)

这不是CGI的工作方式。

标题在内容之前。

请参阅RFC3875

  

6.2。响应类型

     

响应包含一个message-header和一个message-body,分开      一个空白行。消息头包含一个或多个标头      领域。正文可能为NULL。

 generic-response = 1*header-field NL [ response-body ]

您想要的是客户解决方案:第一个响应返回插页式广告。然后,后续请求加载完成的页面。这些天,这是使用AJAX调用完成的。在过去,我们曾经做过整页重新加载。

请参阅Randal Schwartz's "Watching long processes through CGI"