使用AJAX从javascript调用Perl脚本
我想从javascript调用一个perl脚本。我使用AJAX尝试过这一点:使用AJAX从javascript调用Perl脚本,javascript,ajax,perl,webserver,cgi,Javascript,Ajax,Perl,Webserver,Cgi,我想从javascript调用一个perl脚本。我使用AJAX尝试过这一点: function create_request(obj) { var req = \"id=\"+0; var req_http =new XMLHttpRequest(); req_http.open(\"POST\", \"create_file.pl\", false); req_http.setRequestHeader(\"Content-type\", \"application/x-www
function create_request(obj) {
var req = \"id=\"+0;
var req_http =new XMLHttpRequest();
req_http.open(\"POST\", \"create_file.pl\", false);
req_http.setRequestHeader(\"Content-type\", \"application/x-www-form-urlencoded\");
req_http.send(req);
req_http.onreadystatechange = function() {
if (req_http.readyState == 4) {
var resp=req_http.responseText;
document.write(resp); // *** echoes the content of create_file.pl
}
}
}
创建_file.pl:
#!/usr/bin/perl
#
#
use strict;
use warnings;
use CGI;
my $cgi = CGI->new;
open FILE, ">>file.txt" or die $!;
print FILE "aaa";
close(FILE);
print $cgi->header('text/plain;charset=UTF-8');
print 0;
perl脚本只创建一个文本文件
javascript调用perl脚本后,返回结果的打印是create_file.pl的全部内容,而不是创建file.txt文件
javascript调用perl脚本后,返回结果的打印是create_file.pl的全部内容,而不是创建file.txt文件
然后:
- 您正在本地文件系统上工作,而不是通过Web服务器或
- 您尚未将服务器配置为将Perl程序视为CGI而不是静态文件
.pl
文件的请求传递给CGI处理程序
在lighttpd(我使用的)中,这是:
如果您没有使用lighttpd,我建议您在服务器cgi上使用Google,并按照说明进行配置,通过perl解析这些文件。当您从web服务器收到perl脚本的文本时,您希望web服务器执行脚本,那么您所拥有的就是配置错误的web服务器 您需要配置web服务器,以便它知道如何执行文件
通常,人们会将可执行文件与静态内容分开。然后将web服务器配置为允许执行executables目录中的程序。该配置的确切语法将取决于您正在运行的web服务器。完全忽略AJAX,如果您在web浏览器中调用perl脚本会发生什么?
$HTTP["url"] =~ "/cgi-bin/" {
cgi.assign = ( ".pl" => "/usr/bin/perl" )
}