在处理Grails应用程序时,我正在使用Ajax的第一步。我正在使用
<g:form ...>
<g:submitToRemote ... />
</g:form>
以最简单的方式开箱即用(感谢Grails!)。问题是,Ajax调用需要大约2秒才能返回并更新html(至少在测试系统上),在此期间,用户可以(并且实际上经常)再次点击提交按钮。目前这导致第二次调用最终破坏了输出(msg说错误,一次无法提交相同的数据两次)。
防止这种情况的最佳方法是什么?
提前感谢您的意见!
答案 0 :(得分:4)
处理此问题的最佳方法是在onSubmit()函数中disable the submit button。老实说,我不知道为什么更多的网站不这样做。我经常进行下一步,而不是禁用提交按钮,我将提交按钮放在span标签中,并将span标签的内容替换为静态文本“Please wait ...”,这样您的用户就可以得到他们按下的视觉反馈按钮和“顶级男人正在努力”。
答案 1 :(得分:0)
正如dj_segfault所说,你可以这样做。
如果您想在控制器中对此进行验证,请查看官方文档中的“处理重复表单提交”:
http://grails.org/doc/latest/guide/theWebLayer.html#formtokens