【问题标题】:Best way to check a form for required fields?检查表格中必填字段的最佳方法?
【发布时间】:2010-11-17 11:47:11
【问题描述】:

只是一个简短的最佳实践问题:对表单进行必填字段检查的最佳方法是什么?我看到 3 个选择:

  1. 服务器端。重新加载页面并显示错误消息。
  2. Javascript(客户端)用于用户友好的非重新加载,还在服务器端重复要求并清理输入。
  3. AJAX - 两全其美,使用 JS 询问服务器是否满足必填字段。

我想对于“最佳”的含义并没有很好的定义。我想知道什么是最佳的、优雅的、可维护的、安全的和可靠的。用户体验也是关键。我愿意假设用户没有关闭 JS。后端可以是任何东西,但我正在考虑使用 PHP。

【问题讨论】:

    标签: javascript html ajax forms


    【解决方案1】:

    总体规则应该是 Javascript 应该“补充”服务器端验证。因为 Javascript 可以被关闭甚至被弄乱。 (油猴?)

    我会说 jQuery Validator,然后是 Serverside Validation。 这样启用 Javascript 的人可以获得不必刷新即可获得错误的好处,但它可以顺利降解。

    是否使用 AJAX 提交字段取决于您,但您不应使用它进行验证,除非是检查姓名/电子邮件是否可用。最好让 JavaScript 在用户键入时对其进行验证,因为不必向服务器发送请求既更快又更高效。

    仅使用 JavaScript 方法可以让人们在关闭 javascript 时绕过验证。因此,当数据传递到服务器时,请务必再次验证数据。

    【讨论】:

    • 写错字了..你们速度很快。
    • +1 用于绕过验证——我从来没有这样想过——关闭 Javascript 以避免麻烦:)
    【解决方案2】:

    1 是安全的,但对用户不那么友好。如果开发时间非常宝贵,它会在紧要关头完成。

    2 只有在您提到的在服务器上重复验证时才是安全的,这需要更多的努力(因为您实际上是在两次有效地编写相同的代码)但会提供最佳的用户体验。

    3 对用户来说既安全又友好,但没有像客户端 Javascript 那样快速地向用户提供反馈。

    这里并没有真正的“最佳”设置,只需选择适合您的时间预算和用户友好性需求的那个即可。

    【讨论】:

      【解决方案3】:

      我对你的清单的看法

      1. 最容易实施。作为验证过程的一部分,应该需要很少往返服务器。
      2. 以重复验证规则为代价的良好用户体验。虽然您可以让服务器端代码为您生成 javascript 验证,但并非所有内容都可以在 javascript 中模仿(例如,某些 PCRE 规则、预先验证用户名的可用性或拼写检查)。但是,这种方法应该可以在 95% 或更多的情况下实现。
      3. 以增加 HTTP 消息传递和应用程序复杂性为代价的良好用户体验。这里的好处是您不会重复任何验证 - 服务器会处理所有这些。缺点是增加了复杂性。每个验证往返都需要向用户提供一个反馈循环(即“正在加载...”文本),并且如果请求由于某种原因失败,则需要进行故障转移。此外,正确执行某些验证可能很复杂,例如依赖验证(例如,仅当字段 A 为空时才需要字段 B)

      我无法提出任何具体建议,因为我认为这只是“取决于”。这是一个可怕的答案,但我认为就是这样。

      【讨论】:

        【解决方案4】:

        最好的“最佳”:无论您选择什么,请确保在您的解决方案中包含服务器端验证。

        相关:JavaScript ClientSide vs. ServerSide Validation

        【讨论】:

          猜你喜欢
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2017-10-27
          • 1970-01-01
          • 1970-01-01
          • 2018-11-10
          • 2016-01-02
          • 2018-11-19
          相关资源
          最近更新 更多