表单是网站和用户交互的主要桥梁,制作一个好的表单至关重要。我们在实际工作中,往往会发现表单重复提交的现象。
我们测试发现,页面的刷新会造成表单的重复提交。造成用户刷新的原因一般都是网页响应太慢了,或者浏览器卡死等情况。
那么怎么防止网页刷新后表单数据重复提交呢?我归纳了以下三种方法。
使用Session防止重复提交
在提交的页面后,数据库处理之前,添加session("ok")=true,数据处理完成后,再将session修改为session("ok")=false。
我们在刷新页面后,先检测session的值。
if session("ok")=true then response.write "稍后再试,数据正在提交" response.end end if
返回302状态码
302状态码:服务器目前从不同位置的网页响应请求,但请求者应继续使用原有位置来进行以后的请求。
在用户提交信息后,我们不要在POST提交的目标URL返回结果页面,而返回一个302将浏览器重定向到真正的结果显示页,然后浏览器通过GET去获取那个页面。
这样之后,用户刷新结果页,或者通过历史记录回到该页面,都不会导致浏览器要重新进行POST,达到了防止用户点刷新按钮时重复提交的问题。
禁止缓存不让后退
如果在操作数据库的时候可以后退,这时刷新了页面,就会再次执行添加操作,怎么办呢?
我们就要禁止缓存不让后退。
ASP网站禁止后退:
Response.Buffer = True Response.ExpiresAbsolute = Now() - 1 Response.Expires = 0 Response.CacheControl = "no-cache"
ASP.NET网站禁止后退:
Response.Buffer=true; Response.ExpiresAbsolute=DateTime.Now.AddSeconds(-1); Response.Expires=0; Response.CacheControl="no-cache";
根据实际情况,选择一个适合自己的方法来阻止网页刷新后表单重复提交。
关于表单话题的文章本站还有:超链接如何提交表单、表单内容不消失
声明:如需转载,请注明来源于www.webym.net并保留原文链接:http://www.webym.net/jiaocheng/245.html