我正在研究使用CGI :: FormBuilder的现有代码,我已经浏览了所有文档,看看它是如何工作的,我并不是100%相信它会。代码有几个自由格式字段和3个按钮:更新,取消和测试。测试按钮使用输入到字段中的设置发送电子邮件。
在表单的JS中,单击“Test”时使用ajax调用,以便执行表单中的perl代码。更新和取消按钮返回就像表单提交时一样。这样做的原因是,当发送测试电子邮件时,我不希望将用户带到返回的页面,而是保留在表单中,其值保持不变,这样如果值正确,则用户不会当他们想要更新实际值(更新我的数据库中的值)时,必须重新输入它们。显然,由于表单未被“提交”,它尝试在此“测试”中使用的值是在页面打开时加载到表单中的值 - 它在使用之前未使用用户输入的值测试按钮。有没有办法让这种情况发生?
长问题:使用CGI :: FormBuilder,我可以通过PERL获取当前字段中的值而无需提交页面吗?谢谢!
答案 0 :(得分:1)
简答:是的。
中回答:是的。您可以使用页面中的javascript将信息发送到服务器端应用程序。
答案很长:
您似乎对服务器端和客户端代码如何与网页交互产生了一些困惑。这很常见。许多人希望它们在呈现的页面和生成它的程序之间进行某种通信。 AJAX和相关技术模糊了这里的界限,使事情变得更加混乱。
这是一个简单的老式CGI表格的时间表:
来自客户的每条消息都是单独处理的。
AJAX允许您向服务器发送消息并获取响应,而无需清除当前加载的页面。
所以,只需将一些javascript代码放入html,并设置一个onModify处理程序,它将发出一个AJAX请求并将数据传回服务器。 AJAX请求只是另一个HTTP请求,就像上面那些,但它在后面运行。您需要做的就是捕获提交的数据并做出响应。你的javascript需要捕获响应并用它做一些事情。
答案 1 :(得分:0)
对简短问题的回答是“否”。
对长问题的回答是“是”。
您只需要两个“提交”按钮:“提交”和“测试”。 Test提交的表单将向CGI发送表单,CGI将仅验证字段的值并使用相同的值返回相同的表单,并在字段中出现错误时发送消息。