【问题标题】:Node.js server-side form validation with client-side response带有客户端响应的 Node.js 服务器端表单验证
【发布时间】:2012-03-06 17:02:28
【问题描述】:
Express-form 是一个非常强大的 node.js/express 验证插件。但是,在示例和文档中,所有的响应都是服务器端的(console.log),这对于开发来说已经足够了,但是告诉用户出了什么问题并不实用。
目前,我可以想象两种不同的解决方案:
- 提交表单并重新重定向/重新呈现表单,并附加 req.body 和验证消息以将“错误”类添加到错误字段。
- 使用 AJAX 提交表单。
我更喜欢选项 2,因为我不想在呈现“新”时再次查询数据库。但我不知道如何将验证结果传递回客户端并将“错误”类添加到输入字段。
有什么想法吗?
【问题讨论】:
标签:
javascript
ajax
node.js
validation
express
【解决方案1】:
我首先尝试在浏览器中通过 javascript 验证用户输入,然后在服务器上验证以呈现形式输出错误(a la rails)。现在我正在使用我的一组自定义验证器,所以我无法通过 express-form 为您指明正确的方向。
除了我的自定义正则表达式,有时我会使用 validator npm 包,您还可以使用普通 DOM 或某些框架在浏览器中使用 validator 验证。
编辑:
使用 AJAX 验证非常简单,您在请求中收到一个对象(如果您使用 express.bodyParser() 中间件),验证参数,如果有一些错误,您可以在响应中指出它。
{
"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
}
如果你在浏览器端使用框架,有插件或者我相信写一个很简单。