防止页面刷新重复提交数据

徐春伟7788 2013-06-21 11:00:12
防止页面刷新重复提交数据
前提条件是 我先前的数据不清空的情况下 刷新不提交数据
这样的话 重新定向什么的都失效了 有没有什么好的方法
...全文
500 17 打赏 收藏 转发到动态 举报
写回复
用AI写文章
17 条回复
切换为时间正序
请发表友善的回复…
发表回复
udSoft2020 2013-10-27
  • 打赏
  • 举报
回复
码农的人生 要浪费多少青春在这种事情上面呀
_沫尘 2013-06-25
  • 打赏
  • 举报
回复
楼上的各位都没有明白楼主提问的意思 楼主不是要怎么打开其他页面刷新本页面的方法 而是问怎么实现: 本页面提交后,按下F5不会重写提交一次,但是必须还能保存之前一次提交的数据在相应的表单里面。 要解决楼主的问题,如下思考: 按下F5 如果是用服务端表单(或者服务端按钮)提交的数据,100%会重新提交一次, 所以两种思路 1,服务端提交之后重新打开此页面(即楼上各位回答的跳转啊什么的),但是要保存表单数据,所以需要把提交的值当作参数或者从某处读取(读取提交到数据库中的数据,也可以是临时存放处,如session、cookies//这个没必要,既然是提交的数据,直接数据库读取就好,没必要再保存个临时数据)再次传递过来,这样重新跳转到此页面后,获取值给各个标签赋值 2,客户端提交,ajax提交数据 ,这样按F5 100%不会重新提交,但F5之后要能保存表单值,一样需要重新赋值(把提交到数据库中的数据重新读取,然后赋值)
踏平扶桑 2013-06-25
  • 打赏
  • 举报
回复
引用 13 楼 u010787176 的回复:
[quote=引用 9 楼 5653325 的回复:] Page_load里面

Response.Cache.SetCacheability(System.Web.HttpCacheability.NoCache);
Response.Expires = 0; Response.Buffer = true;
Response.ExpiresAbsolute = DateTime.Now.AddSeconds(-1);
Response.AddHeader("pragma", "no-cache");
Response.CacheControl = "no-cache"; 
试试看,提交后网页就过期了,无法通过F5重新提交。 另外还有一个就是你提交成功后,重新respons定位到当前页,页可以防止F5重复提交。
并非通过F5刷新的页面,而是在A页面中 点击按钮打开B页面,B页面关闭的时候,通过JS使其刷新的[/quote] 这个也简单啊,用模式对话框打开B,B关闭的时候,JS的window.location重新指向A页面就会重新加载了。 不知道你说的B页面关闭的时候 A页面你是如何控制的,或者是哪里会出现重复提交的问题?
徐春伟7788 2013-06-24
  • 打赏
  • 举报
回复
引用 9 楼 5653325 的回复:
Page_load里面

Response.Cache.SetCacheability(System.Web.HttpCacheability.NoCache);
Response.Expires = 0; Response.Buffer = true;
Response.ExpiresAbsolute = DateTime.Now.AddSeconds(-1);
Response.AddHeader("pragma", "no-cache");
Response.CacheControl = "no-cache"; 
试试看,提交后网页就过期了,无法通过F5重新提交。 另外还有一个就是你提交成功后,重新respons定位到当前页,页可以防止F5重复提交。
并非通过F5刷新的页面,而是在A页面中 点击按钮打开B页面,B页面关闭的时候,通过JS使其刷新的
  • 打赏
  • 举报
回复
你可以不刷新,js+ajax post给处理程序,然后返回处理结果
徐春伟7788 2013-06-21
  • 打赏
  • 举报
回复
要可以跳至其他页面 我也不至于这么烦恼了
徐春伟7788 2013-06-21
  • 打赏
  • 举报
回复
引用 2 楼 xiaozhihui5535 的回复:
请求转发,执行更新操作后立即转跳到其他页面 重新加载该页面,<script>window.location="当前页面'</script> 清空特定文本
对不起 再加特定要求 必须是在本页面,也就是说本页面肯定要刷新 但又不允许清空数据,也不允许跳转至其他页面
_萧萧 2013-06-21
  • 打赏
  • 举报
回复
请求转发,执行更新操作后立即转跳到其他页面 重新加载该页面,<script>window.location="当前页面'</script> 清空特定文本
徐春伟7788 2013-06-21
  • 打赏
  • 举报
回复
有没有人知道啊 知道的告诉一下啊
joyhen 2013-06-21
  • 打赏
  • 举报
回复
引用 11 楼 zanychou 的回复:
设定个隐藏值(0 未提交 1 已提交),提交后隐藏值置为1并将提交按钮禁用。
这个方法处理过,但是是在判断的时候会丢失的,因为如果网速卡了,服务器端还没有回发(客户端可以有效限定重复提交的方法很多,不考虑),这时候你按下F5,那个隐藏的值会丢失的,不信可以试试哦! 页面中转+自定义控件,个人拙见,试验成功
习惯就好 2013-06-21
  • 打赏
  • 举报
回复
设定个隐藏值(0 未提交 1 已提交),提交后隐藏值置为1并将提交按钮禁用。
joyhen 2013-06-21
  • 打赏
  • 举报
回复
还得加上一个前端js: http://blog.csdn.net/joyhen/article/details/8603599 使用提交按钮变灰色,因为在网速比较卡的情况下,上面的几种情况都会存在再次点击提交按钮产生重复提交
踏平扶桑 2013-06-21
  • 打赏
  • 举报
回复
Page_load里面

Response.Cache.SetCacheability(System.Web.HttpCacheability.NoCache);
Response.Expires = 0; Response.Buffer = true;
Response.ExpiresAbsolute = DateTime.Now.AddSeconds(-1);
Response.AddHeader("pragma", "no-cache");
Response.CacheControl = "no-cache"; 
试试看,提交后网页就过期了,无法通过F5重新提交。 另外还有一个就是你提交成功后,重新respons定位到当前页,页可以防止F5重复提交。
coobai 2013-06-21
  • 打赏
  • 举报
回复
防止页面刷新重复提交数据 让我想起之前的糗事。
LMAOhuaNL 2013-06-21
  • 打赏
  • 举报
回复
引用 5 楼 Return_false 的回复:
你可以不刷新,js+ajax post给处理程序,然后返回处理结果
专业的做法也许效果更佳
uinatlex 2013-06-21
  • 打赏
  • 举报
回复
http://msdn.microsoft.com/zh-cn/library/ms178210(v=vs.80).aspx

62,041

社区成员

发帖
与我相关
我的任务
社区描述
.NET技术交流专区
javascript云原生 企业社区
社区管理员
  • ASP.NET
  • .Net开发者社区
  • R小R
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

.NET 社区是一个围绕开源 .NET 的开放、热情、创新、包容的技术社区。社区致力于为广大 .NET 爱好者提供一个良好的知识共享、协同互助的 .NET 技术交流环境。我们尊重不同意见,支持健康理性的辩论和互动,反对歧视和攻击。

希望和大家一起共同营造一个活跃、友好的社区氛围。

试试用AI创作助手写篇文章吧