Html Perl CGI脚本不返回内容
今天我要写我的第一个CGI程序。所以我有一个HTML页面,一个JavaScript程序,当我在本地运行它们时,它们都可以正常工作。 因此,下一步是在Apache服务器上运行它(在MacOSX上本地运行),第一个示例是“Hello World”,它也可以正常工作 问题是当我试图显示“内容类型:text/html”时 我写的是:Html Perl CGI脚本不返回内容,html,perl,apache,cgi,Html,Perl,Apache,Cgi,今天我要写我的第一个CGI程序。所以我有一个HTML页面,一个JavaScript程序,当我在本地运行它们时,它们都可以正常工作。 因此,下一步是在Apache服务器上运行它(在MacOSX上本地运行),第一个示例是“Hello World”,它也可以正常工作 问题是当我试图显示“内容类型:text/html”时 我写的是: #!/usr/bin/perl -wT use strict ; use warnings ; use diagnostics ; use
#!/usr/bin/perl -wT
use strict ;
use warnings ;
use diagnostics ;
use CGI ;
use CGI::Ajax ;
print "Content-type: text/html \n\n";
sub initialize_html
{
my $html = <<HTML ;
<!DOCTYPE html>
<html>
<head>
<meta name="viewport" content="initial-scale=1.0, user-scalable=no"/>
<meta http-equiv="content-type" content="text/html; charset=UTF-8"/>
<style type="text/css">
html { height: 100% }
body { height: 100%; margin: 0px; padding: 0px }
label { font-size:9px; text-align:center; color:#222; text-shadow:0 0 5px #fff; font-family:Helvetica, Arial, sans-serif; }
#map_canvas { height: 100% }
</style>
<title>Network Weathermap | hellas online</title>
<script type="text/javascript" src="http://maps.google.com/maps/api/js?sensor=false"></script>
<script type="text/javascript" src="js/network_weathermap.js"></script>
</head>
<body>
<div id="map_canvas"></div>
</body>
</html>
HTML
print $html . "\n" ;
}
#initialize_html() ;
sub parameterize_info_window
{
return "CGI \n" ;
}
my $cgi = new CGI() ;
my $ajax = new CGI::Ajax( describeInfoWindow => \¶meterize_info_window) ;
print $ajax->build_html($cgi, \&initialize_html) ;
$ajax->JSDEBUG( 1 ) ;
#/usr/bin/perl-wT
严格使用;
使用警告;
使用诊断;
使用CGI;
使用CGI::Ajax;
打印“内容类型:text/html\n\n”;
子html
{
my$html=build\u html($cgi,\&initialize\u html);
$ajax->JSDEBUG(1);
并返回:“没有head/html标记,无处插入。仍返回javascript”
我怎样才能克服这个问题?原因是什么
谢谢您的
初始化\u html
子例程不会发回页面的html
行
print$html.\n“
需要更改为return$html.\n”
您的初始化\u html
子例程不会发回页面的html
行
print$html.\n“
需要更改为return$html.\n”
我不太清楚您的核心问题,但其中一个问题是,当您收到将由CGI::Ajax处理的请求时,您不应该发送HTTP头(例如,内容类型)首先是你自己。当你print$ajax->build\uhtml(…)
它会自动为您解决这一问题。通过先发送您自己的头,您将CGI::Ajax的头移动到响应体中,它们将无法正常工作。我不太清楚您的核心问题,但其中一个问题是,当您收到将由CGI::Ajax处理的请求时,您不应该发送首先自己发送HTTP头(例如,内容类型)。当您print$ajax->build_html(…)
时,它会自动为您处理这些问题。通过首先发送您自己的头,您将CGI::ajax的头移动到响应体中,它们将无法正常工作。返回“no head/html”的内容-您的浏览器?控制台?您的日志文件?您提出了什么请求?您是在浏览器地址栏中点击url,还是在javascript中提出了实际的ajax请求?请说明,我想为perl+1:)嗨,thanx为兴趣,当我键入“”在我的浏览器地址栏中。javascript中没有实际的ajax请求,只有一个名为“DescribeInfo窗口”的函数,我希望调用函数“parameterize\u info\u window”。返回“no head/html”的是什么-您的浏览器?控制台?您的日志文件?您提出了什么请求?您是在浏览器地址栏中点击url,还是在javascript中提出了实际的ajax请求?请说明,我想为perl+1:)嗨,thanx为兴趣,当我键入“”在我的浏览器地址栏中,javascript中没有实际的ajax请求,只有一个名为“DescribeInfo窗口”的函数,我希望调用函数“parameterize\u info\u window”。