大家好我通过我的网站调用python脚本时遇到问题,使用PHP或AJAX
我所有的东西,html,php,css和.py都在同一个文件夹/ var/www/html/
JS:
document.getElementById('print').onclick = function(){Print()};
function Print() {
var param = 'zya';
$.ajax({
type: 'POST',
url: '../degaps1.py',
data: {param: param},
success: function(response){
output = response;
alert(output);
}
});
的Python:
degaps1.py
import cgi
import cgitb; cgitb.enable()
print "Content-Type: text/html"
print ""
arguments = cgi.FieldStorage()
print "test"
当我使用没有“../”的“url”时,它正在打印整个代码,现在我在控制台中收到一条消息... 403 Forbidden。我该怎么办才能修好它?提前谢谢!
如果我没错,警报中的输出应为“test”。
答案 0 :(得分:1)
你不能像这样随时调用脚本,最多可以从中得到的只是文件的内容。你需要一台服务器......你知道......服务器端的东西,比如处理请求。
看看Flask。它是python的小型服务器,它不需要时间来设置它,一旦你设置它,你可以通过Javascript调用你的脚本。您还可以寻找其他解决方案,但我记得当我需要使用Python而不是PHP时,Flask是我的救星!
答案 1 :(得分:0)
最后我得到了它的工作!我在conf.modules.d / apache.conf和conf.d / vhost.conf上的配置设置得很好,文件路径正确...但主文件conf / httpd.conf有所有设置错了,我把它们全部改了,终于工作了! :d
vhost.conf
NameVirtualHost *:80
<VirtualHost *:80>
ServerName test
ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"
ErrorLog /var/www/html/logs/errors.log
CustomLog /var/www/html/logs/access.log combined
<Directory />
Options FollowSymLinks
AllowOverride All
</Directory>
</VirtualHost>
的apache.conf
DocumentRoot "/var/www/html"
<IfModule prefork.c>
StartServers 5
MinSpareServers 20
MaxSpareServers 40
MaxRequestWorkers 256
MaxConnectionsPerChild 5500
</IfModule>
的httpd.conf
Include conf.modules.d/*.conf
DocumentRoot "/var/www/html"
<Directory "/var/www/html">
Options Indexes FollowSymLinks
AllowOverride None
Require all granted
</Directory>
<IfModule alias_module>
ScriptAlias /cgi-bin/ "/var/www/cgi-bin/"
</IfModule>
<Directory "/var/www/cgi-bin">
AllowOverride None
Options None
Require all granted
</Directory>
.py文件位于/var/www/cgi-bin/file.py
#!/usr/bin/python
print "Content-type: text/html\n\n";
print "Hello World.\n";
而ajax是:
$.ajax({
type: 'POST',
url: '../cgi-bin/file.py',
data: {param: param},
success: function(response){
output = response;
alert(output);
}
});
The output is: alert >> Hello World!
可能存在一些不完整之处,但它现在有效:D