【问题标题】:Refreshing the page submits the form repeatedly [duplicate]刷新页面重复提交表单[重复]
【发布时间】:2013-10-31 09:49:39
【问题描述】:

我在页面中有一个简单的表单。表单正在提交到同一页面。表单提交后,当我单击浏览器刷新按钮时,它会要求重新发送表单,当我单击重新发送时,它会再次提交表单。

我的代码或其正常浏览器行为是否有任何问题?

有什么办法可以防止这种情况..

【问题讨论】:

  • 这个answer 可能对你有帮助。请看一看。 $('form').preventDoubleSubmission();
  • 您尚未使用该平台进行标记,因此很难链接到您的平台的副本。但他们在那里

标签: javascript jquery forms browser


【解决方案1】:

这是浏览器的正常行为。您可以通过在提交当前表单后重定向到其他页面来防止这种情况发生。

对此的常见解决方案是在执行 POST 请求后向 GET 请求发送重定向。这样,客户端最终将在浏览器视图中获得 GET 请求。刷新它只会重新执行不(不应该)修改任何内容的 GET 请求。

【讨论】:

    【解决方案2】:

    这是正常行为。防止使用另一个页面提交并重定向回表单。

    【讨论】:

    • 这应该是一条评论,它是正确的,但从某种意义上说它并没有帮助 OP 解决问题
    【解决方案3】:

    是正常行为。当您提交表单时,即使是到同一页面,浏览器也会发出请求。刷新按钮发送相同的请求。因此多次提交。

    不......你不能做任何事情,除了也许 ajax 提交表单。

    【讨论】:

    • 您可以轻松地做一些事情。该模式称为 post-redirect-get 或在 post 之后重定向
    【解决方案4】:

    这是浏览器的正常行为,如果它检测到 POST 请求并且您刷新页面,您的浏览器会自动询问您是否需要再次发送请求。为了防止这种情况..好吧..你可以简单地重定向到另一个页面,或者仔细检查服务器端的表单提交(看看是否没有双重)

    【讨论】:

      【解决方案5】:

      这是正常行为,但您可以在处理结束时添加重定向到同一页面而无需 POST:

      <?php
      // set to true to display a waiting message "Thanks you, you will be redirected in 5 sec."
      $wait_before_refresh = false;
      if (isset($_POST['myButton']))
      {
        // process to your checks, do whatever you want
        // ...
        if ($wait_before_refresh)
        { 
          $html_redirect = <<<HTML_REDIR
      <!DOCTYPE html>
      <html><head><title>Thanks you !</title>
      <meta http-equiv="refresh" content="5;URL='/'" />
      </head>
      <body>Thanks you, you will be redirected in 5 sec.</body></html>
      HTML_REDIR;
          echo $html_redirect;
        }
        else
        {
          header('Location : /');
          exit;
        }
      }
      ?>
      <form method="POST" action="/"><input type="submit" name="myButton" value="clicked" /></form>
      

      【讨论】:

        猜你喜欢
        • 2014-06-23
        • 2019-03-14
        • 1970-01-01
        • 2019-11-26
        • 1970-01-01
        • 2021-06-30
        • 2016-01-08
        • 1970-01-01
        • 2017-06-23
        相关资源
        最近更新 更多