停止浏览器要求在刷新时重新发送表单数据?
我有一个通过POST提交表单。 我提交表单,一切正常,但是如果我尝试重新加载表单提交后的新页面,则会显示“您要重发数据”消息(FireFox)。 它也可能发生在其他浏览器,但我不知道。
有没有人知道一种方法来阻止这个消息popup,所以我可以继续刷新页面。 这对于生产环境并不好 – 用户可以提交两次相同的表单!
您需要使用POST-Redirect-GET模式。
使您的表单响应redirect到GET请求。
这样,当用户刷新页面时,只会重新发送GET。
response.sendRedirect
之后的一个简单的方法是以这种方式重新加载页面:
window.location.href = window.location.pathname;
它适用于我。
如果浏览器这样做,这将是一个安全违规。 对于信用卡处理中的前者,网站可能会向用户收取两次费用。
唯一的办法就是去地址栏打回车。 这将引起新的要求。
如果url没有任何参数,使用这个 –
window.location = window.location.href+"?rnd="+Math.random();
或者使用这个 –
window.location = window.location.href+"&rnd="+Math.random();
它会工作。