从启用JavaScript的网页将变量传递给Perl脚本

Ama*_*irk 1 html javascript apache perl

我正在使用带有JavaScript的HTML,它通过Apache 2服务器调用Perl脚本.

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

我找到了一种使用CGI方法执行此操作的常用方法.它运作成功,但不是我想要的.

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

xmlhttp.open("GET", "try.pl?name=Joe", false);
Run Code Online (Sandbox Code Playgroud)

调用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";
Run Code Online (Sandbox Code Playgroud)

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

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

所以我想要这样的东西:

xmlhttp.open("GET", "try.pl?name=fileNameVar", false);
Run Code Online (Sandbox Code Playgroud)

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

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

我在网上找到的只是文字(name=Joe而不是name=variable).我是Web服务器概念的新手,非常感谢任何帮助.

Bor*_*din 5

您应该字符串的编码版本附加到URL而不使用查询参数值.

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

+运算符连接字符串.

所以你要

xmlhttp.open('GET', 'try.pl?name=' + encodeURIComponent(fileNameVar), false);
Run Code Online (Sandbox Code Playgroud)