两个按钮在我的perl CGI脚本中执行相同的操作

时间:2013-06-06 07:12:35

标签: perl redirect button cgi

我的perl cgi代码中有这2个按钮,即使我为每个按钮分配了不同的动作,也会执行相同的操作 这是代码

print
  start_html(),
  start_form(-action => 'com.pl'),         #first action for first button
  submit(-name => 'submit', -value => 'View com.pl'), //on cliking this redirects to com.pl script

  start_form(-action => 'about.pl'),
  submit(-name => 'submit', -value => 'About Us');  //On clicking this button it redirects to com.l instead about.pl

  end_form,
  end_html; 

如何更改此设置,以便点击“关于我们”按钮会将我重定向到about.pl

3 个答案:

答案 0 :(得分:3)

我发现问题是你开始<FORM>两次,但你只关闭了一次!所以你有一个FORM和(我假设)只有当按下SUBMIT按钮时才会激活第一个,因为第二个FORM被认为是错误。

请从浏览器发布HTML页面来源。这有助于分析结果。

我建议对两个按钮实施onClick操作。所以你可以启动你想要的任何脚本。

答案 1 :(得分:2)

HTML只允许<form>拥有一个action。如果您想要单独的action,则需要使用单独的表单或使用javascript在提交之前更改表单的操作。

获得相同效果的更常见方式是只有一个(基本)URL,所有形式的提交都会到达,不同的按钮为“action”参数赋予不同的值。接收提交的代码然后检查此参数以确定要执行的操作。

这种常见方式的更高级(更简单)版本是使用Web框架(我的个人偏好是Dancer)来处理确定请求的操作的过程并将请求分派给正确的{ {1}}处理它。

除此之外,即使你坚持使用CGI.pm而不是使用“真正的”框架,我也建议不要使用CGI.pm的HTML生成功能。如今,将它们包括在CGI.pm中通常被认为是一个坏主意。使用模板系统(例如Template::ToolkitXslate)是一种更加灵活和可维护的方法。

答案 2 :(得分:0)

使用表单执行此操作没有意义。如果您想要的只是彼此相邻的两个按钮形式。然后我会使用带有超链接的CSS。

<style>
a.button5 {
-webkit-appearance: button;
-moz-appearance: button;
appearance: button;

text-decoration: none;
color: initial;
}
</style>
<a class="button5" href="com.pl">View com.pl</a> &nbsp;<a class="button5" href="about.pl">About Us</a>