可选表单 - 如何删除“此页面已使用数据...”消息?

时间:2012-12-04 23:58:36

标签: php html forms header

  

可能重复:
  I am confused about PHP Post/Redirect/Get

我在页面上有一个表单,所以我得到了#34;这个页面使用了数据,你确定要刷新"我重新加载页面时的错误消息。

我查看了HTTP-303响应代码,它解除了消息(我在Chrome btw上),直到我提交表单一次,然后它再次开始烦我。

基本上,我有一个可选的"联系我"表单,如果刷新页面,则不应该提示。我不会想/为什么我需要一个单独的页面来提交这样的简短表格。任何人都可以帮助我吗?

3 个答案:

答案 0 :(得分:1)

您最好的选择是使用Ajax。这样你就不需要重装了。 我通常将其与JQuery一起使用。
所以你最终得到的结果是:

function send_message(vMessage,vWho) {
    $.ajax({
        url:"messageSender.php",
        data:{message:vMessage,from:vWho},
        type:"POST",
        success:function(result) {
            // DO SOMETHING HERE, LIKE AN ALERT
        }
    });
}

答案 1 :(得分:1)

最终解决方案: 如何在同一页上阻止表单重新提交

  1. 您应该拥有action="something"标记。 HTML5中必需
  2. 检查表单是否已提交。如果你没有,并且有一个header('Location: ...')它将会像一个无限循环(废话)。像if (isset($_POST['some_submit_btn'])) {
  3. 这样的东西
  4. 你是否处理逻辑
  5. 执行header('Location: same_page')(例如:header('Location: ' . $_SERVER['PHP_SELF']))和exit
  6. 即使在提交表单后,您的页面也可以定期刷新。重定向会清除POST请求或其他任何内容。

    其他人指出Ajax是一个更简单的解决方案。我接受了它作为答案,但如果有人想这样做,我把它作为参考。

    注意:如果要在两个页面/刷新之间传递数据,则必须通过会话或cookie传递它(我更喜欢会话)。我不认为有一个“干净”的解决方法

答案 2 :(得分:0)

保存表单数据后需要重定向。它可以在同一页面上完成,这不是问题,您只需要发出GET请求而不是POST。