0

我的 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

4

3 回答 3

3

如我所见,问题是您启动了<FORM>两次,但您只关闭了一次!所以你有一个(我假设)如果按下一个按钮,FORM只有第一个会被激活,因为第二个被认为是错误的。SUBMITFORM

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

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

于 2013-06-06T08:17:45.373 回答
2

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

获得相同效果的更常见方法是只有一个(基本)URL,所有表单提交都会转到,不同的按钮为“action”参数提供不同的值。接收提交的代码然后检查此参数以确定要做什么。

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

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

于 2013-06-06T08:33:09.900 回答
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>
于 2016-07-20T16:37:36.030 回答