使用JavaScript表单提交时确认表单重新提交

时间:2016-06-18 02:40:01

标签: php

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

<?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>

我在按钮提交的表单中测试注释中的重定向代码并且它有效!

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

1 个答案:

答案 0 :(得分:0)

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

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

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

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

所以你必须修复这个命令才能将结果实际发送到另一个页面,或者只是做一些其他事情,比如回显你所选择的值,如:

Error 404