我正试图进入Web开发世界,我在理解为什么我的基本hello world脚本失败时遇到了一些麻烦。我有一个简单的AJAX调用python cgi脚本返回一小部分HTML,但调用失败,我得到“内部服务器错误”作为错误消息。这是我的代码:
Python脚本:
#!/usr/local/bin/python
print "Content-Type: text/html\n"
print """\
<html>
<body>
<h2>Hello World!</h2>
</body>
</html>
"""
AJAX致电:
$(function(){
$('#clickme').click(function(){
$.ajax({
url: "cgi-bin/ajaxpost.cgi",
dataType: "html",
type: "POST",
success: function(response){
alert(response);
},
error: function(XMLHttpRequest, textStatus, errorThrown) {
alert(errorThrown);
}
});
});
});
以下是我的服务器错误日志所说的内容:
CGI ERROR: A system problem prevented your request from being completed., referer: [my test page]
Premature end of script headers: ajaxpost.cgi, referer: [my test page]
我用我的服务器进行了双重检查,“#!/ usr / local / bin / python”是python的正确路径。此外,他们说他们没有指定的cgi-bin文件夹,任何cgi都可以从任何文件夹运行,只要它具有.cgi扩展名。编辑:另外,我已经允许在服务器上执行.cgi。
我会继续并承认我可能需要一个“像我五岁那样解释它”的答案。谢谢!
答案 0 :(得分:1)
第一行末尾有一个斜杠字符。在三重引号内,这是一个字面斜线。删除它。
答案 1 :(得分:1)
结尾需要两个\ n
print“Content-Type:text / html \ n”
而不只是一个。
尝试:打印“Content-Type:text / html \ n \ n”
答案 2 :(得分:1)
我刚刚通过在WinSCP中删除服务器上的.cgi文件并重新上传它而不是仅仅在更新之间覆盖它。除此之外,我确保它是以文本而不是二进制形式上传的。我怀疑这可能是问题,因为它可能保留了Windows文本文件格式。一个菜鸟的错误,我敢肯定。谢谢你的帮助。