Node.js服务器端表单验证与客户端响应

时间:2012-02-15 10:49:40

标签: javascript ajax node.js validation express

Express-form是node.js / express的一个非常强大的验证插件。但是,在示例和文档中,所有响应都是服务器端(console.log),这对于开发来说已经足够了,但是告诉用户出了什么问题并不太可行。

目前,我可以想象两种不同的解决方案:

  1. 提交表单并重新定向/渲染表单,并附上req.body和验证消息,将“错误”类添加到错误的字段中。
  2. 使用AJAX提交表单。
  3. 我更喜欢选项2,因为我不想在渲染'new'时再次查询数据库。但我不知道如何将验证结果传递回客户端并将“错误”类添加到输入字段。

    有什么想法吗?

1 个答案:

答案 0 :(得分:3)

我尝试在浏览器的第一个实例中通过javascript验证用户输入,然后验证服务器输出呈现形式的错误(la rails)。现在我正在使用我的一组自定义验证器,所以我无法用express-form指向正确的方向。

除了我的自定义正则表达式,我有时使用validator npm包,您还可以使用普通DOM或某些框架在浏览器中使用validator验证。

修改

使用AJAX验证非常简单,您在请求中收到一个对象(如果您使用express.bodyParser()中间件),验证参数,如果有错误,您可以在您的响应中指出它。< / p>

{
"errors": {
    "foo": "must be a number"
  }
}

for (i in answer.errors) {
  var target = document.getElementById(i);
  target.class = "error";
  // here you can also handle the error description
}

如果您在浏览器端使用框架,则有插件或我确定编写插件很简单。