有人知道为什么在刷新页面时会自动重新提交表单吗?
我设置了一个javascript cookie来测试是否刷新页面 - 如果它是'YES'那么就这样做......这是对body load事件的动作。表单通过隐藏的iFrame提交。
问题是,当发生这种情况时,页面上的“购买”按钮(提交)表单将重新提交,从而返回到刚从(购物篮)返回的页面。这发生在FF中,但不在IE中。
任何帮助表示感谢。
答案 0 :(得分:1)
解决此问题的常用方法是使用POST收件人:
捕获脚本完成POST所需的所有处理后,抛出一个Location:
标头,重定向到当前请求的URI。这会影响浏览器识别最终目的地没有收到POST,因此刷新不会重新提交POST。
<?php
if (!empty($_POST)) {
// Do some stuff
header('Location: page.php');
// The second time around _POST won't have any data,
// so there's not worry of an infinite loop
exit;
}
?>
<h1>Hi, I will never try to resubmit POST data!</h1>
答案 1 :(得分:0)
FireFox旨在保存您的表单/输入,其中包括提交按钮。 这在开发带有表单的站点时非常有用,因此您不必继续填写它们,但它有时会妨碍它,但它是一个浏览器功能,而不是代码问题。
答案 2 :(得分:0)
如果您发布了POST以进入当前页面(而不是发布一个post.redirect来获取当前页面),当您点击浏览器的刷新按钮时,它将重新启动POST。不过,我不确定这与您隐藏的Iframe问题有什么关系。 (似乎我重复Shad刚刚说的话,实质上)。