我可以在不提交的情况下从Perl中的formbuilder字段中读取值吗?

时间:2013-01-30 20:49:12

标签: forms perl cgi formbuilder

我正在研究使用CGI :: FormBuilder的现有代码,我已经浏览了所有文档,看看它是如何工作的,我并不是100%相信它会。代码有几个自由格式字段和3个按钮:更新,取消和测试。测试按钮使用输入到字段中的设置发送电子邮件。

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

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

2 个答案:

答案 0 :(得分:1)

简答:是的。

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

答案很长:

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

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

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

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

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

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

答案 1 :(得分:0)

对简短问题的回答是“否”。

对长问题的回答是“是”。

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