我使用 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);
我的变量将会改变:我希望它是动态的。我不想像使用 name=Joe
那样将文件名硬编码到 GET
语句中,但我该如何执行此操作?
当我尝试时,它只是打印 fileNameVar
而不是 fileNameVar
中存储的内容。有什么想法吗?
我在网上能找到的只是文字(name=Joe
而不是 name=variable
)。我对网络服务器概念非常陌生,我们将不胜感激任何帮助。
最佳答案
您应该将字符串的编码版本附加到不带查询参数值的 URL。
对 encodeURIComponent
的调用将 URL 中可能非法的字符编码为十六进制数字。
+
运算符连接字符串。
所以你想要
xmlhttp.open('GET', 'try.pl?name=' + encodeURIComponent(fileNameVar), false);
关于javascript - 将变量从启用 JavaScript 的网页传递到 Perl 脚本,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17115711/