【问题标题】:passing variables to perl script from html从 html 将变量传递给 perl 脚本
【发布时间】:2012-10-15 08:36:31
【问题描述】:

我正在尝试从我的 HTML 页面调用 perl 脚本。我尝试做的方法是调用位于服务器上的 perl 脚本的 url。

这是一段代码:

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。还是不行。

谁能指出问题所在?

谢谢, 嗡嗡声

【问题讨论】:

  • 不是真正的 HTML。您有一个 Perl 和 Javascript 问题:您应该拆分它们。

标签: html perl url-parameters


【解决方案1】:

没有@ARGV 包含命令行参数并且将为空。

您需要CGI 模块

use warnings;
use strict;

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

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

【讨论】:

  • 谢谢,你是对的。我使用了错误的方法来捕获参数。你能帮我解决另外两个问题吗?
【解决方案2】:

除了 Matteo 所说的,一个简单的print 语句不足以将一些输出发送到浏览器。

请参阅a recent answer I wrote 提供带有输出的示例 CGI 脚本。

关于您的其他问题:

变量附加到以&分隔的url:

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

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

【讨论】:

  • 是的,我明白这一点。只是想让知道我如何尝试找到参数值。我能够从我的 perl 脚本的结果中输出 html。
  • dan111 -- 感谢附加参数的方式。
  • dan111 -- 代码 window.location.href = url;奇怪的是不在Firefox中执行。 javascript 本身不起作用
  • @BuzzLightYear,抱歉,这对你不起作用。我自己对js没有太多经验;我只是觉得这看起来很有用。
【解决方案3】:

有两种不同的环境,每种环境以两种不同的方式传递变量。命令行可以通过@ARGV 传递变量,浏览器可以通过@ENV 传递变量。无论您使用什么语言,这些都是您必须使用的数组。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2016-01-11
    • 2013-04-28
    • 2013-06-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多