堆栈溢出解决方案对我来说不起作用我做错了什么?

时间:2017-10-18 05:44:17

标签: php jquery ajax

这个问题已被提出很多,所以我发现了这篇文章Allowing users to Refresh browser without the "Confirm Form Resubmission" pop-up

我按照它说的做了,但现在我收到的消息是500:内部错误。

那么我在这里做错了什么?我基本上希望能够刷新页面而没有得到这条消息的欢迎

确认重新提交 您要查找的页面使用了您输入的信息。返回该页面可能会导致您重复执行任何操作。你想继续吗?

因为表单而且我都将其检查到Preventing form resubmission

我试着理解这些家伙的答案但是我仍然没有得到正确的东西,如果任何人可以通过使用PHP方法或使用jQuery方法的AJAX来向我展示链接中提到的两个所谓的杨树方法来防止确认对于重新提交的消息,我将非常感激。我更喜欢基于我的代码的代码解决方案作为答案,因为我个人学得最好,谢谢你。

GIF Screenshot

的index.php

    <!DOCTYPE html>
    <html>
      <head>
        <style>
          *, *:before, *:after {
      -moz-box-sizing: border-box;
      -webkit-box-sizing: border-box;
      box-sizing: border-box;
    }

    body {
      font-family: 'Nunito', sans-serif;
      color: #384047;
    }

    form {
      max-width: 300px;
      margin: 10px auto;
      padding: 10px 20px;
      background: gold;
      border-radius: 8px;
    }

    h1 {
      margin: 0 0 30px 0;
      text-align: center;
    }

    input[type="text"] {
      background: rgba(255,255,255,0.1);
      border: none;
      font-size: 16px;
      height: auto;
      margin: 0;
      outline: 0;
      padding: 15px;
      width: 100%;
      background-color: white;
      color: black;
      box-shadow: 0 1px 0 rgba(0,0,0,0.03) inset;
      margin-bottom: 30px;
    }


    button {
      padding: 19px 39px 18px 39px;
      color: #FFF;
      background-color: blue;
      font-size: 18px;
      text-align: center;
      font-style: normal;
      border-radius: 5px;
      width: 100%;
      border: 1px solid blue;
      border-width: 1px 1px 3px;
      box-shadow: 0 -1px 0 rgba(255,255,255,0.1) inset;
      margin-bottom: 10px;
      cursor: pointer;
    }

    label {
      display: block;
      margin-bottom: 8px;
    }

    label.light {
      font-weight: 300;
      display: inline;
    }

</style>
      </head>
      <body>
    <form action='x.php' method='POST'>
      <h1>Form</h1>
      <label for='name'>Name</label>
      <input type='text' id='name' name='name' value='Tom'>
      <label for='age'>Age</label>
      <input type='text' id='age' name='age' value='20'>
      <button type='submit'>Send</button>
    </form>
      </body>
    </html>

x.php

<?php

if($_SERVER['REQUEST_METHOD'] == "POST"){ header('x.php'); }

$name = $_POST['name'];
$age = $_POST['age'];

?>

<p><?php echo $name; ?></p>
<p><?php echo $age; ?></p>

1 个答案:

答案 0 :(得分:0)

我稍微改变了你的代码,但应该产生你想要的结果

<?php
    if(isset($_POST['submit'])){
        header('Location: x.php?successfulRedirect');
        exit;
    }
?>
<form action='' method='POST'>
    <h1>Form</h1>
    <label for='name'>Name</label>
    <input type='text' id='name' name='name' value='Tom'>
    <label for='age'>Age</label>
    <input type='text' id='age' name='age' value='20'>
    <input type='submit' name='submit' value='Send' />
</form>

这将确保您在点击发送后将其重定向到x.php,其中包含GET参数,只是为了看到重定向有效