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

时间:2013-06-14 19:13:30

标签: javascript html perl apache

我正在使用带有JavaScript的HTML,它通过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服务器概念的新手,非常感谢任何帮助。

2 个答案:

答案 0 :(得分:5)

您应编码的版本的字符串附加到网址,而不使用查询参数值。

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

+运算符连接字符串。

所以你想要

xmlhttp.open('GET', 'try.pl?name=' + encodeURIComponent(fileNameVar), false);

答案 1 :(得分:-5)

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