我正在使用带有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服务器概念的新手,非常感谢任何帮助。
答案 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脚本之间的状态。