我有一个form表单,提交到一个java的controller,然后返回一个jsp页面。 表单是这样提交的
<a href="javascript:void (0)" onclick="document.getElementById('subform').submit();return true">
当我提交后,返回页面过后,我刷新(F5)页面,为什么表单又会重新提交,怎么防止它重新提交?
收起
当前问题酬金
¥ 0 (可追加 ¥500)
支付方式
扫码支付
支付金额 15 元
提供问题酬金的用户不参与问题酬金结算和分配
支付即为同意 《付费问题酬金结算规则》
https://www.cnblogs.com/xdp-gacl/p/3859416.html
改成return false也是一样的效果
处理自动提交的方式很多,但是如果就是一个的话,你可以自己做一个,比如判断关键字段空也可以的
这个正常,不过,可以通过页面跳转来解决。
取消默认行为就行了。e.preventDefault
提交成功后 用return返回false
1、首先你要确认地址栏中的网址是否与当前页面路径一致,若不一致,刷新只是基于地址栏网址的刷新; 2、你可能是通过POST提交的,请确认提交后,跳转的页面是不是通过GET也可以打开,若不能,刷新也会有问题。
可以提交表单后重新转向地址就可以!
post请求处理完成后重定向到get就可以了
可以使用token机制
搞一个隐藏字段啊,在SUBMIT这里做个CLICK事件,如果手动提交的改变这个隐藏字段的值,服务器可以判断这个值来判断是不是刷新还是提交
不要用转发,用重定向
可以设置return的值为false,这样就不用担心点击提交了
1、form方法是不是get提交,改成post(这种会再次访问一次服务器) 2、阻止F5的刷新(这个F5直接不起作用)
原理:提交表单--发出请求(此时浏览器的地址是:form里的action地址,包含表单信息)--处理器默认转发到相应页面--转发地址栏不变,所以刷新会重复提交
解决:处理器重定向到页面,return "redirect:/index.jsp"; 地址栏变为:/index.jsp,此时怎么刷新都没问题
使用异步提交吧,提交完成后再跳转
String token = TokenProccessor.getInstance().makeToken();//创建令牌 System.out.println("在FormServlet中生成的token:"+token); request.getSession().setAttribute("token", token); //在服务器使用session保存token(令牌) request.getRequestDispatcher("/form.jsp").forward(request, response);//跳转到form.jsp页面
页面取出令牌 判断
if ($("#ID")){ $("#ID").text("hi"); }
为什么不用《input type =:"submit"这个呢
报告相同问题?
程序员都在用的中文IT技术交流社区
专业的中文 IT 技术社区,与千万技术人共成长
关注【CSDN】视频号,行业资讯、技术分享精彩不断,直播好礼送不停!