使用无脚本重新填充表单和显示错误的最佳方法是什么?
-
05-07-2019 - |
题
我正在构建一个使用ajax调用进行表单验证的应用程序和其他一些应用程序,问题是我不喜欢它,当那些验证错误出现在没有css的新页面上时,表单完全被重置而没有重置javascripts。
我正在谈论十几种形式,因此用户一遍又一遍地浏览表格会非常烦人。
我已经阅读了关于这个主题的一些答案,但有没有一种特定的方法,这种情况的最佳实践(更多的是表单验证)?
如果已经有答案,请道歉。
编辑:
所有验证都在服务器端完成,目前在ajax的帮助下显示错误。如果在处理表单时发生错误,我想要的是一种方便的方法来重新填充表单并在没有javascript的情况下显示错误。
解决方案
我不确定你是否暗示你的问题是你没有在服务器上验证 - 这将被视为一个巨大的安全漏洞,因为很明显可以通过简单地禁用Javascript来绕过这些漏洞。您必须每次都在服务器中进行验证,而客户端验证则非常好。
此外,“问题”是指“问题”。当你使用一个体面的框架时重新加载页面时重置自己的表单变得没有意义 - 在Python中,Django在出错的情况下自动重新填充表单。在PHP中,CakePHP和CodeIgniter也是如此,我确信大多数好的框架都是这样做的,因为它属于“常见任务”的范畴。该框架应该抽象出来。
每当我不使用框架时,我都会编写自己的小Form类来满足需求。
编辑:
我不知道您可以插入到您必须能够重新填充表单的任何内容。你最好的选择就是为自己编写一个小课程,这应该不会超过1小时。
其他提示
我通常做的是将所有错误字符串存储在会话变量中的数组中(我使用PHP)。如果服务器端出现错误,请将用户重定向回表单页面,检查会话变量,并根据需要显示错误。确保在显示后取消设置会话var以释放内存。同样重新填充表格 - 会话var中的值。
表格验证应首先在客户端上写在客户端上。无论如何,您应该在服务器上进行验证。不要依赖Ajax作为表单验证的简单和关键的操作。使用不显眼的脚本,您可以阻止默认表单提交,然后使用Ajax处理表单。否则,允许提交通过并响应服务器生成的验证页面。
在服务器端执行验证并重新填充表单。
通过AJAX验证很好,但无法强制执行。因此,无论AJAX是否发生,都可以更有效地执行验证。我建议第二个路由可以处理验证并传回JSON中的一系列错误给那些有javascript的人。但对于没有javascript的人来说,验证工作的唯一方法是通过服务器端。
不幸的是,你真的没有选择。任何一个体面的程序员或带有firebug的黑客都可以编辑你的javascript,分离钩子,并绕过你想要做的所有事情:偏执并在服务器端强制执行验证。