从JavaScript调用Perl脚本
Call a Perl script from JavaScript
我想从JavaScript调用Perl脚本。Perl脚本将文件从一个文件夹移动/复制到另一个文件夹。但是当我尝试调用它时,它没有运行。
我是这个领域的新手,所以一点帮助对我来说意义重大。
copy_file.pl
#!/usr/bin/env perl
use strict;
use warnings;
use File::Copy;
my $source_dir = "/home/Desktop/file";
my $target_dir = "/home/Desktop/Perl_script";
opendir(my $DIR, $source_dir) || die "can't opendir $source_dir: $!";
my @files = readdir($DIR);
foreach my $t (@files) {
if (-f "$source_dir/$t" ) {
# Check with -f only for files (no directories)
copy "$source_dir/$t", "$target_dir/$t";
}
}
closedir($DIR);
home。
<!DOCTYPE html>
<html>
<body>
<h1>My First JavaScript</h1>
<p>Click Date to display current day, date, and time.</p>
<button type="button" onclick="myFunction()">Date</button>
<p id="demo"></p>
<script>
function myFunction() {
document.getElementById("demo").innerHTML = Date();
$.get("copy_file.pl");
}
</script>
</body>
</html>
这看起来像是CGI/Apache的问题。要使Perl代码在Apache环境中正确运行,您需要返回一个Content Type头,作为代码输出的第一个内容之一。尝试使用看起来更像这样的代码…
#!/usr/bin/env perl
use strict;
use warnings;
print "Content-Type: text/html'n'n";
use File::Copy;
use CGI::Carp qw(fatalsToBrowser); #nice error handling, assuming there's no major syntax issues that prevent the script from running
my $source_dir = "/home/Desktop/file";
my $target_dir = "/home/Desktop/Perl_script";
opendir(my $DIR, $source_dir) || die "can't opendir $source_dir: $!";
my @files = readdir($DIR);
foreach my $t (@files) {
if (-f "$source_dir/$t" ) {
# Check with -f only for files (no directories)
copy "$source_dir/$t", "$target_dir/$t";
}
}
closedir($DIR);
print "<h1>OK</h1>'n";
print "<p>Print</p>'n";
__END__
此外,不用说,您需要确保脚本在文件系统上也需要被标记为可执行,并且Apache需要具有运行它的权限。检查完所有这些后,从URL行运行脚本,以确保在尝试从JavaScript调用脚本之前获得某种输出。
从JavaScript的角度来看,如果想让JavaScript代码正常工作,还需要包含一个指向jQuery的链接,正如Quentin正确指出的那样。尝试在Body部分上方添加以下header部分(和include)…
<head>
<script src="//ajax.googleapis.com/ajax/libs/jquery/1.11.1/jquery.min.js"></script>
</head>
如果你查看你的JavaScript错误控制台,你会看到它在抱怨$
没有定义。
你似乎在尝试使用jQuery,你需要在你的页面中包含它的库,然后才能使用它提供的功能。
<script src="path/to/where/you/put/jquery.js"></script>
相关文章:
- 无法使用ajax/javascript将文件上传到perl脚本
- 在Perl CGI脚本中捕获iframe返回值
- 如何在网页中显示perl脚本结果
- 将简单的Perl脚本翻译成Python,向客户端发送响应
- perl脚本中的javascript
- 从 Web UI 与本地 Perl 脚本接口
- 从 JavaScript 调用 Perl 脚本
- 如何在运行perl机械化脚本时操作DOM元素
- 一个单独的Perl脚本可以运行一个网站的JavaScript函数吗?
- BlackBerry WebWorks应用程序中的Perl脚本
- 在ajax中使用post方法和perl脚本&参数
- 如何在单击时禁用提交按钮并将表单数据提交到perl脚本
- 在加载html页面时运行perl脚本
- 当使用json从perl/cgi向客户端发送包括换行符在内的字符串时,脚本将停止
- 使用CGI方法通过web服务器将参数从JavaScript传递到Perl脚本
- HTML和perl,返回脚本文本而不是运行
- 将一个变量从支持javascript的网页传递给Perl脚本
- 通过 APACHE 服务器调用多个 perl 脚本
- 在perl脚本中调用uglifyjs (javascript函数)
- 当Javascript调用Perl脚本时,捕获OS异常