当前位置: 首页 > 图文教程 > 网络编程 > 相关技巧 > 十分钟内学会 避免用户刷新导致重复POST提交

相关技巧
让开发自动化 用 Eclipse 插件提高代码质量
键盘扫描码[比较完整]
Wordpress 忘记密码的处理方法
firefox 扩展开发技巧
php asp.net 比较 [推荐]
UTF-8 BOM 可能导致样式错乱的解决方法
Web 开发常用工具 大家自己查找下载
遇到不能复制的网站怎么办?
URL 长度有限制吗?
声音验证码制作方法
防范SQL注入式攻击
Web 设计与开发者必须知道的 15 个站点
十分钟内学会 避免用户刷新导致重复POST提交
flash 挡住层的解决方法
XML CDATA的作用
调试JavaScript/VBScript脚本程序(IE篇)
JavaScript/VBScript脚本程序调试(Wscript篇)
alt键 chr码值对应列表查看方法
彻底解决页面文字编码乱码问题
数据类型和Json格式分析小结

相关技巧 中的 十分钟内学会 避免用户刷新导致重复POST提交


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2010-01-10   浏览: 68 ::
收藏到网摘: n/a

在Web应用中,采用POST提交信息是非常常见的,然而如果目标页面打开得太慢,用户就可能会刷新页面,这时候之前已经提交过的信息就会被重复提交。 Question
在Web应用中,采用POST提交信息是非常常见的,然而如果目标页面打开得太慢,用户就可能会刷新页面,这时候之前已经提交过的信息就会被重复提交。即使用户成功打开了POST提交目标页,之后他通过链接导航到别处了,再退回到POST提交目标页时仍可能会重复提交页面(例如因为浏览器缓存已失效)。而且,只要碰到重复POST提交的场景,浏览器就会问用户是否确认重做此操作,用户并不一定能正确理解重做意味着重做什么,浏览器又不允许网站向用户解释清楚,所以这属于非常不友善的设计。那么我们应该如何避免用户刷新带来的重复提交呢?
Answer
有一种最简单的模式能够解决这个问题,叫做PRG,也就是Post-Redirect-Get。在用户提交信息后,我们不要在POST提交的目标URL返回结果页面,而返回一个302将浏览器重定向到真正的结果显示页,然后浏览器通过GET去获取那个页面。
这样做的话,用户刷新结果页,或者通过历史记录回到该页面,都不会导致浏览器要重新进行POST,自然也就不会出现烦人的是否重做对话框了。而对于你来说,也有效避免了用户重复提交信息的可能性。