Получить имя и значение из опции, используя Perl CGI param - PullRequest
0 голосов
/ 15 марта 2011

В моем HTML-коде у меня есть

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

Мне нужно получить и имя, и значения в моей функции Perl на стороне сервера через мой параметр Perl CGI.

Я могу получить только значение, есть ли способ получить имя?

Ответы [ 3 ]

4 голосов
/ 15 марта 2011
<option name="PRODUCTS" value="3">Products</option>

Элемент <option> не имеет атрибута name, поэтому это недопустимый HTML, и браузер его игнорирует (за исключением того, что он может сделать его доступным для JavaScript).

Когда форма отправлена, браузер отправит на сервер имя выбранного вместе со значением выбранного параметра . Это единственная информация, которую сервер получит.

Если вы хотите получить «ПРОДУКТЫ», вам потребуется:

  1. Включите его в значение: value="3-PRODUCTS", а затем my ($number, $word) = split '-', $value
  2. Найдите слово, с которым 3 связано на сервере (например, в хэше, встроенном в скрипт, или с запросом к базе данных).
0 голосов
/ 15 марта 2011

Я бы использовал метод Vars, если есть некоторые сомнения по поводу того, что передается, особенно если у вас одно и то же «имя», использованное несколько раз, или js его производящие элементы, которые обычно не существуют на странице. *

use CGI;
use Data::Dumper
my $q = new CGI;
print
   $q->header({ type=>'text/plain' }),
   Dumper($q->Vars);
0 голосов
/ 15 марта 2011

CGI::param() без параметров возвращает все имена.Затем CGI::param($name) вернет все значения для данного имени.

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

Обновление: извините, неправильно прочитал «option» как «input».Атрибут name опции вообще не отправляется на сервер, поэтому невозможно определить, что это было, не имея также самого html.Вы можете добавить JavaScript, чтобы установить скрытое поле ввода для имени опции, когда она выбрана.Что делает populateCatArray?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...