我认为使用Ajax验证表单对于避免代码重复非常有用。在实现之前,我感兴趣的是,与简单的javascript验证相比,这种技术是否有任何缺点。我只看到几个论点,但我认为考虑到这些论点是相当薄弱的:
很明显,ajax会增加服务器负载,但每个表单只有5-6个连接(这不应该是性能bottleneck.
还有其他我错过的争论吗?
发布于 2011-03-12 00:19:51
从用户体验的角度来看,Ajax验证是很棒的,因为您得到了即时的反馈。
需要记住的一点是,即使使用ajax验证表单,一旦提交的值到达服务器,仍然需要重新验证,以防止安全漏洞,因为攻击者只需使用curl之类的方法发送任意值。
发布于 2011-03-12 00:25:25
如果你想要的是
我只是问我是否会用javascript而不是ajax来验证一个表单,我会得到任何我不能用ajax做的事情吗?
那就不要了。最后,你会在用户的错误输入上得到一个手势。
但是,我不会那么轻易地忽略服务器负载。
每个表单有5个额外的请求--在服务器上重做它需要对表单提交所做的检查--这大约是服务器在表单上工作的两倍。
请记住,AJAX也是javascript,所以您并没有完全摆脱它。
最后,带有服务器往返的JavaScript (而且AJAX是服务器往返)不会像简单的JavaScript那样直接。
但是-是的。这是代码复制。这是你的交易,你做的任何决定都是有效的,如果你的项目可以接受它。
编辑:修复了一个错误+移动到社区wiki
发布于 2011-03-12 00:26:30
采取相反的立场:
( 1) 5或6个请求不是什么大问题,而是每个用户每个表单的连接数的5或6倍。如果您正在讨论将您的服务器从每天100到600 k连接,最好考虑一下。
3)宽带无处不在,但缓慢和不可靠的无线连接也是如此。根据您如何实现它,表单可能会感到非常笨重。
您确实需要在服务器上重新验证--但这就是您要说的:无论如何,通过ajax重用服务器上的逻辑,而不是在客户机上使用JS复制它。
请注意:一些框架允许您在一个地方声明验证,然后为您生成Javascript (非ajax)和服务器端。我知道JSF (有此功能),我认为.net也有。
https://stackoverflow.com/questions/5279773
复制相似问题