0

我正在处理使用 CGI::FormBuilder 的现有代码,并且我已经阅读了所有文档以了解它是如何工作的,但我并不是 100% 相信它会。该代码有几个自由格式字段和 3 个按钮:更新、取消和测试。测试按钮使用在字段中输入的设置发送电子邮件。

在表单的 JS 中,我在单击“测试”时使用 ajax 调用,以便执行表单中的 perl 代码。更新和取消按钮的返回方式与提交时的表单一样。这样做的原因是,当发送测试电子邮件时,我不希望用户被带到返回的页面,而是保留在表单上,​​值保持不变,这样如果值正确,用户不会当他们想要更新实际值(更新我的数据库中的值)时,必须重新输入它们。显然,由于表单没有被“提交”,它试图在这个“测试”中使用的值是在页面打开时加载到表单中的值——它没有使用用户在点击之前输入的值测试按钮。有没有办法做到这一点?

长问题短:使用 CGI::FormBuilder,我可以通过 PERL 获取当前字段中的值而不提交页面吗?谢谢!

4

2 回答 2

1

简短的回答:是的。

中等答案:是的。您可以在页面中使用 javascript 将信息发送到您的服务器端应用程序。

长答案:

您似乎对服务器和客户端代码如何与网页交互有些困惑。这很常见。许多人希望它们是呈现页面和生成它的程序之间的某种通信。AJAX 和相关技术模糊了这里的界限,使事情变得更加混乱。

这是一个简单的老式 CGI 表单的时间表:

  • 客户请求页面。服务器接收页面请求。服务器分派到 CGI 脚本。
  • 服务器执行 CGI 脚本。
  • 服务器将 CGI 脚本的结果发送给客户端。
  • 客户端呈现脚本结果。
  • 用户填写表格。
  • 用户点击“提交”。带有参数信息的客户端请求页面(详细信息因请求类型、表单配置而异)。
  • 服务器接收页面请求。
  • 服务器分派到 CGI 脚本。
  • 服务器执行 CGI 脚本。服务器将 CGI 脚本的结果发送给客户端。客户端呈现脚本结果。

来自客户端的每条消息都是单独处理的。

AJAX 允许您向服务器发送消息并获得响应,而无需清除当前加载的页面。

因此,只需将一些 javascript 代码放入 html 中,并设置一个 onModify 处理程序,该处理程序将发出 AJAX 请求并将数据传回服务器。AJAX 请求只是另一个 HTTP 请求,就像上面的那些,但它在后台运行。您需要做的就是捕获提交的数据并做出响应。您的 javascript 需要捕获响应并对其进行处理。

于 2013-01-30T21:54:49.387 回答
0

简短问题的答案是“否”。

长问题的答案是“是”。

您只需要两个“提交”按钮:“提交”和“测试”。Test 的提交会将表单发送到 CGI,CGI 将仅验证字段的值并返回具有相同值的相同表单并在字段中出现错误时发送消息。

于 2013-01-30T22:26:59.563 回答