我正在使用Bluehost托管一个网站,我正在尝试使用AJAX按钮单击执行python脚本。但是,每次单击该按钮时,服务器都会响应python脚本的500错误。更具体地说,这是错误:
[Sun Nov 30 17:49:26 2014] [错误] [客户174.61.70.33]提前结束 脚本标题:Steap.py,referer:http://steap.co/
这是AJAX代码:
$(document).ready(function(){
$("#steambutton").click(function() {
DisplayLoadingDiv();
$.ajax({
type: "POST",
url: "http://steap.co/cgi-bin/Steap.py",
data: {steamid: "<?php echo $steamprofile['steamid']?>"},
success: function(response) {
$("#steamdiv").html(response);
$("#phisherbutton").show()
},
error: function(response) {
$("#steamdiv").html("An error occured. Please try again.");
}
});
});
});
基本上,div在执行0.01秒后显示"An error occured. Please try again."
,并且控制台显示服务器在尝试加载python脚本资源时响应500错误。
Steap.py :
有关为何发生这种情况的任何想法?
答案 0 :(得分:0)
我很确定问题是,您未在Steap.py
中正确形成HTTP响应。特别重要的是HTTP/1.1 200 OK\n
部分( Status Line )
我在计算机中设置了原始TCP套接字实现(使用SocketServer),并通过执行以下操作在Web浏览器中正确呈现页面:
import datetime
body=("<html><title>Hello</title>"
"<body>"
"<div id=\"div-name\">"
"%s"
"</br></br>"
"</div>"
"</body>"
"</html>" % foo(bar))
reply=("HTTP/1.1 200 OK\n"
"Date: %s\n"
"Content-Type: text/html\n"
"Content-Length: %s\n"
"Connection: close\n"
"\n"
"%s"
% (datetime.datetime.utcnow().isoformat(' '),
len(body),
body)
)
print reply
这看起来很好地显示在Chrome中:
毋庸置疑,但这是我的foo(bar)
函数:
def foo(bar):
return "Test test"
所有这些说,我真的,真的,真的学习如何在 Bluehost “区域”中安装预制服务器(例如Django或Tornado) (或者你想叫它)。我倾向于龙卷风(它的使用非常基础,但它会帮助很多,所以你不必自己“手动”编写标题和正文)