为什么在刷新页面时会自动重新提交表单

时间:2012-02-10 00:13:45

标签: javascript forms firefox refresh

有人知道为什么在刷新页面时会自动重新提交表单吗?

我设置了一个javascript cookie来测试是否刷新页面 - 如果它是'YES'那么就这样做......这是对body load事件的动作。表单通过隐藏的iFrame提交。

问题是,当发生这种情况时,页面上的“购买”按钮(提交)表单将重新提交,从而返回到刚从(购物篮)返回的页面。这发生在FF中,但不在IE中。

任何帮助表示感谢。

3 个答案:

答案 0 :(得分:1)

解决此问题的常用方法是使用POST收件人:

捕获脚本完成POST所需的所有处理后,抛出一个Location:标头,重定向到当前请求的URI。这会影响浏览器识别最终目的地没有收到POST,因此刷新不会重新提交POST。

PHP示例

page.php文件

<?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刚刚说的话,实质上)。