检查表单是否为必填字段的最佳方法?

时间:2009-08-06 20:23:13

标签: javascript html ajax forms

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

  1. 服务器端。重新加载页面并显示错误消息。
  2. Javascript(客户端),用户友好的非重新加载,也重复服务器端的要求和清理输入。
  3. AJAX - 两全其美,使用JS向服务器询问是否满足必填字段。
  4. 我想我对“最佳”的定义并没有很好的定义。我想知道什么是最佳,优雅,可维护,安全和可靠。用户体验也很关键。我愿意假设用户没有关闭JS。后端可能是任何东西,但我在用PHP思考。

4 个答案:

答案 0 :(得分:4)

总体规则应该是Javascript应该“补充”服务器端验证。因为Javascript可以关闭甚至搞砸。 (Greasemonkey的?)

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

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

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

答案 1 :(得分:2)

1是安全的,但对用户不友好。如果开发时间非常宝贵,那么它就会紧张。

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

3对用户来说是安全且友好的,但不像客户端Javascript那样快速地向用户提供反馈。

这里没有真正的“最佳”设置,只需选择适合您的时间预算和用户友好程度的愿望。

答案 2 :(得分:2)

我对你的清单的看法

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

答案 3 :(得分:1)

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

相关:JavaScript ClientSide vs. ServerSide Validation