我想从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-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
}
}
}
create_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。
最佳答案
这与AJAX无关
如果您正在获取从AJAX调用返回的perl文件的内容,则意味着您的Web服务器未配置为处理perl(Javascript正在正确访问该位置,否则您将得到404)。
至于如何做到这一点,在不知道您的服务器的情况下很难说。通常,您需要设置一条规则,以将对.pl
文件的请求传递到CGI处理程序。
在lighttpd(我使用的是)中,这是:
$HTTP["url"] =~ "/cgi-bin/" {
cgi.assign = ( ".pl" => "/usr/bin/perl" )
}
如果您不使用lighttpd,建议您使用Google的
your-server cgi
,并按照说明进行配置,以通过perl解析这些文件。关于javascript - 使用AJAX从javascript调用Perl脚本,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/22044473/