Javascript Text::微模板和服务器端验证[Perl]
我有一个表单,我使用Javascript Text::微模板和服务器端验证[Perl],javascript,perl,templates,Javascript,Perl,Templates,我有一个表单,我使用Text::MicroTemplate向其中添加一些字段,例如: 用户名 姓 电子邮件 使用标记内的循环添加字段,使用正则表达式验证这些字段的数据(将其作为参数发送到模板,并使用样式显示:无标记在HTML中“隐藏”),到目前为止,一切正常 突然,我不得不添加另一个字段,对于该字段,必须在服务器端验证数据,这样做的最佳方法是什么?(当然,我可以检查POST数据,如果它不正确,可以发送回带有相关错误消息的表单,但之后,我将不得不再次呈现整个页面,而我不会对其他字段执行此操作…)
Text::MicroTemplate
向其中添加一些字段,例如:
用户名
姓
电子邮件
使用
标记内的循环添加字段,使用正则表达式验证这些字段的数据(将其作为参数发送到模板,并使用样式显示:无标记在HTML中“隐藏”),到目前为止,一切正常
突然,我不得不添加另一个字段,对于该字段,必须在服务器端验证数据,这样做的最佳方法是什么?(当然,我可以检查POST数据,如果它不正确,可以发送回带有相关错误消息的表单,但之后,我将不得不再次呈现整个页面,而我不会对其他字段执行此操作…)
可能是ajax的问题
谢谢,AJAX可以避免整个页面呈现,这是一件好事™.
您肯定知道,编写与不同浏览器实现协同工作的AJAX代码将产生意大利面条式JavaScript代码,因此我的建议是使用好的JavaScript库来消除差异。我之所以选择它,是因为如果你熟悉CSS2选择器,它很容易学习,使用起来也很有趣。还有其他很好的库YUI、Prototype、MooTools,请选择一个
使用jQuery,您可以通过各种方式调用AJAX调用,包括以下简单版本:
$.post( url, parameters, callback, returned_type );
在哪里
- url:验证输入的服务器端资源的url
- 参数:其属性序列化为编码参数的对象
- 回调:在请求完成时调用回调(响应正文和状态作为第一个和第二个参数传递给回调)
- 键入:一个字符串,如
'html'
,'text'
,'xml'
,'json'
,它告诉服务器需要什么样的响应
通常,要发送表单,您必须将事件处理程序挂接到submit按钮:事件处理程序劫持submit事件,从而有机会在客户端验证值并通过AJAX调用发送它们
$( '#my_form' ).submit( function( event ) {
// Prevent classic submission that ends with whole page render
event.preventDefault();
// Here iterate through form elements and do a client-side check
...
$ajax.post( ... );
}
我可以理解我的示例过于简单,但这种模式相当常见:劫持提交事件并以另一种方式执行。
您将在的第11章中找到更多示例(包括那些具有强大jQuery插件的示例),标题为Html表单增强与插件