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服务器概念的新手,非常感谢任何帮助.
您应该将字符串的编码版本附加到URL而不使用查询参数值.
调用encodeURIComponent
编码为十六进制数字符号,否则在URL中可能是非法的.
该+
运算符连接字符串.
所以你要
xmlhttp.open('GET', 'try.pl?name=' + encodeURIComponent(fileNameVar), false);
Run Code Online (Sandbox Code Playgroud)