【问题标题】: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),这对于开发来说已经足够了,但是告诉用户出了什么问题并不实用。

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

  1. 提交表单并重新重定向/重新呈现表单,并附加 req.body 和验证消息以将“错误”类添加到错误字段。
  2. 使用 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
    }
    

    如果你在浏览器端使用框架,有插件或者我相信写一个很简单。

    【讨论】:

      猜你喜欢
      • 2011-10-17
      • 1970-01-01
      • 2013-04-16
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-09-22
      • 1970-01-01
      相关资源
      最近更新 更多