1

我正在使用 HTML 和 JavaScript,它通过 Apache 2 服务器调用 Perl 脚本。

我想将一个变量从我的 JavaScript 代码传递给它正在调用的 Perl 脚本。

我发现了一种使用 CGI 方法的常用方法。它工作成功,但不是我想要的。

例如,在我的 JavaScript 中,我有这一行:

xmlhttp.open("GET", "try.pl?name=Joe", false);

它调用 Perl 脚本,将参数传递name给脚本。

在我的 Perl 脚本中,我有:

#!C:/indigoampp/perl-5.12.1/bin/perl.exe
use CGI qw(:standard);
use strict;
use warnings;

my $query = new CGI;

my $name = $query->param('name');
print "Content-type: text/plain\n\n";
print "$name";

JavaScript 只是将结果打印到屏幕上,然后Joe弹出。

问题是我想要做的是传递一个变量。即我的fileNameVar代码中有一个变量,它包含一个字符串(文件名)。我想将此变量传递给 Perl 脚本。

所以我想要类似的东西:

xmlhttp.open("GET", "try.pl?name=fileNameVar", false);

我的变量会发生变化:我希望它是动态的。我不想像GET他们那样将文件名硬编码到语句中name=Joe,但是我该怎么做呢?

当我尝试时,它只是打印fileNameVar而不是存储fileNameVar. 有任何想法吗?

我在网上只能找到文字(name=Joe而不是name=variable)。我对 Web 服务器概念非常陌生,任何帮助将不胜感激。

4

2 回答 2

5

您应该在没有查询参数值的情况下将字符串的编码版本附加到 URL。

encodeURIComponent编码为十六进制数字字符的调用,否则这些字符在 URL 中可能是非法的。

+运算符连接字符串。

所以你要

xmlhttp.open('GET', 'try.pl?name=' + encodeURIComponent(fileNameVar), false);
于 2013-06-14T19:33:50.253 回答
-5

我认为您不能直接将 javascript 变量传递给 perl 脚本。您可以将 javascript 变量的内容保存在 cookie 中,然后从 perl CGI 脚本中读取该 cookie。看看这个: http: //perldoc.perl.org/CGI/Cookie.html。或者,您可以设置一个会话来保留 javascript 和 perl 脚本之间的状态。

于 2013-06-14T19:28:26.573 回答