2012-10-25 156 views
0

我想从我的HTML页面调用perl脚本。我试图做的方式是调用位于服务器上的perl脚本的url。从html传递变量到perl脚本

下面是一段代码:

HTML:

var fname = "Bob"; 
var url='http://xxx.com:30000/cgi-bin/abc.pl?title=fname'; 
window.open(url,"_self");      

的方式我试图在Perl作为检索它:

的Perl:

print "$ARGV[0]\n"; 

现在,我有3个问题:

  1. 我认为这是传递变量的正确方法,但无法在perl中打印参数。
  2. 如果我想传递另一个变量lname,我该如何将它追加到URL?
  3. 我的window.open应该在同一个窗口中打开输出,因为它使用参数_self。它仍然没有。

有人能指出问题吗?

感谢, 巴兹

+1

不是真的HTML。你有一个Perl和Javascript的问题:你应该分解它们。 – Matteo

回答

4

没有@ARGV包含命令行参数,将是空的。

您需要CGI模块

use warnings; 
use strict; 

use CGI; 
my $query = CGI->new; 
print $query->param('title'); 

编辑: 看看dan1111对如何生成HTML并在浏览器中显示它的答案。

+0

谢谢,你说得对。我使用错误的方式捕捉参数。你能帮我解决其他两个问题吗? – BuzzLightYear

+0

没有反对票反对,但评论将有助于知道什么是错的... – Matteo

3

除了Matteo所说的之外,简单的print声明还不足以将一些输出发送到浏览器。

请参阅a recent answer I wrote给出一个带输出的示例CGI脚本。

至于你的其他问题:

变量追加到&分开的网址:

var url='http://xxx.com:30000/cgi-bin/abc.pl?title=fname&description=blah'; 

基于this question,也许你应该试试window.location.href = url;代替(尽管这并不能解释为什么你的代码不工作)。

+0

是的,我明白这一点。只是想让知道如何试图找到参数值。能够从我的perl脚本的结果输出html。 – BuzzLightYear

+0

dan111 - 感谢您添加参数的方式。 – BuzzLightYear

+0

dan111 - 代码window.location.href = url;奇怪的是不执行在Firefox中。该JavaScript本身does not工作 – BuzzLightYear

1

有两种不同的环境,每种环境都以两种不同的方式传递变量。命令行可以通过@ARGV传递变量,浏览器可以通过@ENV传递变量。不管你使用什么语言,那些是你将不得不使用的数组。