Как заставить программу CGI работать, когда кто-то нажимает на кнопку? - PullRequest
3 голосов
/ 13 февраля 2010

У меня есть программа Perl CGI, в которой я разработал форму HTML. Если кто-то нажимает на кнопку в этой форме, в этом файле выполняется подпрограмма CGI / Perl. Поскольку у меня есть несколько кнопок в форме, я устанавливаю их типы как «Кнопка», а не «Отправить».

Это веб-сайт книжного магазина, у меня есть три кнопки для каждой книги (например, мои кнопки: «научная фантастика», «художественная литература» и «стихотворение»). и я должен использовать кнопки. После нажатия каждой кнопки отображается список книг такого типа, и пользователь может выбрать книги. Я не должен использовать javascript: он должен контролироваться CGI.

Ответы [ 4 ]

5 голосов
/ 13 февраля 2010

Это должно быть так же просто, как в вашей форме:

<input type="submit" name="Button1" value="Button 1" />
<input type="submit" name="Button2" value="Button 2" />
<input type="submit" name="Button3" value="Button 3" />

И, в вашем сценарии:

if ($cgi->param('Button1')) {
    # Button1 was clicked, do stuff...
} elsif ($cgi->param('Button2')) {
    # Button2 was clicked, do something else...
} elsif ($cgi->param('Button3')) {
    # Button3 was clicked, do whatever you want...
} else {
    # No button clicked; show the form
}

2 голосов
/ 13 февраля 2010

Нет ограничений на количество type="submit" кнопок, которые вы можете иметь в форме. Пока у них установлено имя / значение, на сервер будет отправляться только пара имя / значение кнопки, используемой для отправки формы.

Существует несколько предостережений из-за поддержки браузера, если вы используете кнопки отправки изображений или сам элемент <button>, но в данном случае это не похоже на то, что происходит в этом случае.

1 голос
/ 13 февраля 2010

Однажды у меня была похожая (я думаю), но более простая ситуация: у меня была программа CGI, генерирующая форму, и когда была нажата кнопка «Отправить», я захотел запустить ту же форму. Для этого просто нужно было, чтобы атрибут действия формы вызывал ту же CGI-программу.

В вашей ситуации кажется, что у вас есть несколько скриптов Perl для вызова, в зависимости от того, какая кнопка нажата. Я не очень часто использовал Perl для CGI, но один из способов сделать это - иметь один CGI-скрипт, который вызывается независимо от того, какая кнопка вызывается. Затем этот сценарий проверяет значения GET или POST и выясняет, какая кнопка была нажата, а затем вызывает соответствующую подпрограмму или сценарий. Google нашел страницу PerlDoc CGI , которая должна помочь вам начать работу.

1 голос
/ 13 февраля 2010

Вы можете назначить другое имя, чтобы различать их на стороне сервера, если это необходимо. В противном случае вы можете попробовать отправить форму с помощью JavaScript ...

Я уверен, что вы можете реализовать это с помощью JavaScript!

Что именно вы хотите сделать?

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