现在的位置: 网页制作教程网站制作经验 >正文
网页基础教程

页面刷新怎样防止表单数据重复提交

发表于2016/11/23 网站制作经验 0条评论 ⁄ 热度 2,444℃

表单是网站和用户交互的主要桥梁,制作一个好的表单至关重要。我们在实际工作中,往往会发现表单重复提交的现象。

我们测试发现,页面的刷新会造成表单的重复提交。造成用户刷新的原因一般都是网页响应太慢了,或者浏览器卡死等情况。

表单重复提交

那么怎么防止网页刷新后表单数据重复提交呢?我归纳了以下三种方法。

使用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";

根据实际情况,选择一个适合自己的方法来阻止网页刷新后表单重复提交。

关于表单话题的文章本站还有:超链接如何提交表单表单内容不消失

  • 暂无评论