使用Perl CGI param从选项中获取名称和值

时间:2011-03-15 05:45:27

标签: html perl cgi

在我的HTML代码中我有

<option name="PRODUCTS" value="3">Products</option>

我需要通过我的Perl CGI参数获取服务器端Perl函数中的名称和值。

我只能获得价值,有没有办法获得这个名字呢?

3 个答案:

答案 0 :(得分:4)

<option name="PRODUCTS" value="3">Products</option>

<option>元素没有name属性,因此这是无效的HTML,浏览器会忽略它(除了它可能使JavaScript可用)。

提交表单后,浏览器会向服务器发送选择的名称以及所选选项的。这是服务器将收到的唯一信息。

如果您想获得“产品”,那么您需要:

  1. 将其包含在值中:value="3-PRODUCTS"然后my ($number, $word) = split '-', $value
  2. 在服务器上查找3与之相关的单词(例如,在脚本中嵌入的哈希,或者使用数据库查询)。

答案 1 :(得分:0)

没有参数的

CGI::param()会返回所有名称。然后CGI::param($name)将返回给定名称的所有值。

for my $name (CGI::param()) {
    for my $val (CGI::param($name)) {
        print "name: $name, value: $val\n";
    }
}

更新:抱歉,将“选项”误读为“输入”。选项的名称属性根本不会发送到服务器,所以如果没有html本身就没有办法告诉它是什么。但是,您可以添加javascript,以便在选择时将隐藏的输入字段设置为选项的名称。 populateCatArray做了什么?

答案 2 :(得分:0)

如果对传递的内容有一些疑问,我会使用Vars方法,特别是如果你有多次使用相同的'name'或者js通常会在页面上不存在生成元素。

use CGI;
use Data::Dumper
my $q = new CGI;
print
   $q->header({ type=>'text/plain' }),
   Dumper($q->Vars);