当有人点击按钮时,如何让CGI程序运行?

时间:2010-02-13 16:51:41

标签: perl button cgi

我有一个Perl CGI程序,我在其中设计了一个HTML表单。 如果有人点击此表单中的按钮,则执行此文件中的CGI / Perl子例程。 因为我在表单中有多个按钮,所以我将其类型设置为“按钮”,而不是“提交”。

这是一个书店网站,我有三个按钮,每个用于一种书籍(例如,我的按钮是:“科幻小​​说”,“小说”和“诗”)。我必须使用按钮。点击每个按钮后,会显示该类书籍列表,用户可以选择书籍。我不应该使用javascript:它应该由CGI控制。

4 个答案:

答案 0 :(得分:5)

它应该像你的形式一样简单:

<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
}

答案 1 :(得分:2)

表单中的type="submit"按钮数量没有限制。只要他们设置了名称/值,只有用于提交表单的按钮的名称/值对将被发送到服务器。

如果您使用图片提交按钮或<button>元素本身,由于浏览器支持,有几点需要注意,但在这种情况下听起来并不像这样。

答案 2 :(得分:1)

您可以指定一个不同的名称,以便在服务器端区分它们(如果它是必要的)。 否则,您可以尝试使用JavaScript提交表单...

我确信你可以用JavaScript实现它!

你想做什么?

答案 3 :(得分:1)

一旦我有类似的(我认为)但更容易的情况:我有一个CGI程序生成一个表单,当点击“提交”按钮时,我想要运行相同的表单。为此,只需要将表单的action属性调用相同的CGI程序即可。

根据您的情况,您可能需要调用多个Perl脚本,具体取决于按下的按钮。我没有将Perl用于CGI,但一种方法是使用一个CGI脚本,无论调用哪个按钮,都会调用该脚本。然后该脚本检查GET或POST值并确定按下了哪个按钮,然后调用相应的子例程或脚本。 Google找到了PerlDoc CGI page,这可以帮助您入门。