我想从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/

10-12 12:56
查看更多