【问题标题】:Confirm Form Resubmission while using JavaScript form submit使用 JavaScript 表单提交时确认表单重新提交
【发布时间】:2016-10-19 22:50:23
【问题描述】:

当我在客户端更改选项后尝试提交表单时,它会显示“确认表单重新提交”

<?php
    if (isset($_POST['fix'])) {
        header('Location: ' . $_SERVER['HTTP_HOST']);
        exit();
    }
?>

<!DOCTYPE html>
<html>
    <head>
        <!-- unnecessary content -->
    </head>
    <body>
        <form method="POST">
            <fieldset>
                <legend>Confirm Form Resubmission</legend>
                <select name="choose" onchange="this.form.submit()">
                    <option value="1">1st</option>
                    <option value="2">2nd</option>
                    <option value="3">3rd</option>
                </select>
                <button name="fix">Fix</button>
            </fieldset>
        </form>
    </body>
</html>

当按钮提交表单时,我在评论中测试了重定向代码并且它有效!

但在这种情况下,我希望能够通过更改选项来提交表单...

【问题讨论】:

  • 我不太确定你在问什么?您在标题中提到了 JavaScript,但您在问题中绝对没有显示 JS。我们应该猜吗?读心术?还是什么?

标签: php


【解决方案1】:

对组合框进行更改后,您将通过命令onchange="this.form.submit()" 提交表单。

您的问题是,当页面收到此参数时(因为您没有为表单指定操作属性,它将提交到同一页面)您检查是否设置了 $_POST['fix'] 这不是因为您有标签form 中的“修复”按钮,这是 form 标签的无效输入。您必须将 if 条件更改为您实际通过 form 发送的内容:

if (isset($_POST['choose'])) {

在这里您将遇到另一个问题,因为您将页面重定向到同一服务器header('Location: ' . $_SERVER['HTTP_HOST']); 这个变量$_SERVER['HTTP_HOST'] 可能会产生localhost 所以说你的页面名称是mypage.php 然后你调用它在您的浏览器上:http://localhost/mypage.php 当您更改组合框时,它将提交您的表单,输入 if 并将您重定向到 http://localhost/localhost,这可能会返回一个 Error 404,这意味着找不到页面。

因此,您还必须修复此命令以实际将结果发送到另一个页面,或者只是执行其他操作,例如回显您选择的值:

<?php
    if (isset($_POST['choose'])) {
        echo "The value I choose was: " . $_POST['choose'];
        exit(); //only add this if want to stop here and 
                //not show your form again since it is the same page 
    }
?>

【讨论】:

  • 所以您想在提交后将您的帖子重定向到另一个页面?是这样吗?
猜你喜欢
  • 2019-03-12
  • 2014-06-16
  • 1970-01-01
  • 1970-01-01
  • 2019-10-14
  • 1970-01-01
  • 2020-08-01
  • 2017-07-21
  • 1970-01-01
相关资源
最近更新 更多