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表单增强与插件