在我的代码中,我有一个按钮,在单击时,调用我创建的javascript函数,名为loadXMLdoc()。这个函数应该创建一个xmlhttprequest并将该请求发送到我写的.cgi脚本(在python中)。但是,它不会导致.cgi脚本执行。下面是我的javascript函数(用我的index.html编写)。
<script>
function loadXMLdoc() {
var xmlhttp = new XMLHttpRequest();
var url = "cgi-bin/run.cgi"
xmlhttp.onreadystatechange = function () {
if (xmlhttp.readyState == 4 && xmlhttp.status == 200) {
$.getJSON('cgi-bin/output.json', function(result) {
$.each(result, function(i, field) {
prompt(field[1]["firstName"])
})
})
}
}
xmlhttp.open("GET", url, true);
xmlhttp.send()
}
</script>
这是我在名为“cgi-bin”的目录中的run.cgi脚本:
#!/usr/bin/env python
from os import system
system("rm output.json")
write_file = open("output.json", 'w')
write_file.write('{"employees":[\n')
write_file.write("\t" + '{"firstName":"John", "lastName":"Doe"},' + "\n")
write_file.write("\t" + '{"firstName":"Peter", "lastName":"Jones"}' + "\n")
write_file.write("]}")
write_file.close()
但是,当通过单击按钮调用loadXMLdoc()时,不会执行run.cgi。也就是说,它不会重写output.json。所以,此刻,点击按钮会显示“Peter”的提示。但是,如果我在上面的cgi脚本中将Peter改为Emily,那么如果我通过单击按钮调用loadXMLdoc(),则不会重写output.json。是不是将xmlhttprequest发送到.cgi应该导致cgi执行?
答案 0 :(得分:0)
确保cgi脚本具有执行权限(chmod + x),并检查脚本是否具有在目录中写入的权限。
答案 1 :(得分:0)
如果没有看到您的网络服务器配置,则无法确定呼叫未被路由到您的cgi-bin脚本的原因。我建议您查看您的网络服务器日志,了解每次点击后记录的内容。这可能会让你知道为什么你的代码没有被调用。
另外,只是在黑暗中捅,但你的javascript网址&#34;可能&#34;不正确。你能试试吗?
var xmlhttp = new XMLHttpRequest();
var url = "/cgi-bin/run.cgi"
注意:我在 cgi-bin之前添加了正斜杠。