我对Web开发比较陌生,我试图让客户端javascript将GET请求发送到服务器和服务器上运行的python脚本,以根据该请求返回数据。我试过调整我在网上找到的webpy库的例子无济于事。每当发送GET请求时,XMLHttpRequest()的responseText属性都会返回python文件的文本而不是数据。任何建议将不胜感激!
javascript函数:
function sendSerialCommand(selection, command) {
var xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function () {
if (xmlhttp.readyState === 4 && xmlhttp.status === 200) {
if (command !== 5) {
document.getElementById("output2").innerHTML = xmlhttp.responseText;
document.getElementById("output2").style.color = "green";
} else {
document.getElementById("output1").innerHTML = xmlhttp.responseText;
console.log(xmlhttp.responseText);
document.getElementById("output1").style.color = "green";
}
}
};
xmlhttp.open("GET", pythonFileName + "?sel=" + selection + "?cmd=" + command, true);
xmlhttp.send();
}
...和测试python脚本:
import web
urls = (
'/', 'Index'
)
app = web.application(urls,globals())
#MAIN LOOP
class Index:
def GET(self):
webInput = web.input()
return 'message: GET OK!'
if __name__ == "__main__":
app.run()
答案 0 :(得分:0)
诀窍是使用CGI库来实现python:
#!/usr/bin/python
# Import modules for CGI handling
import cgi, cgitb
# Create instance of FieldStorage
form = cgi.FieldStorage()
# Get data from fields
first_name = form.getvalue('cmd')
last_name = form.getvalue('sel')
print "Content-type:text/html\r\n\r\n"
print "Hello %s %s" % (first_name, last_name)
这将捕获GET请求中的密钥和数据,print
命令将数据返回到客户端的xmlhttp.responseText
属性。
必须将脚本放入websever能够执行脚本的文件中。这通常是/cgi-bin
或/var/www
中的默认/etc
文件夹。