提交按钮值与隐藏输入值

Submit button value vs. hidden input value

你能告诉我提交提交按钮值和提交隐藏输入值的区别吗?

我问这个问题,特别是关于浏览器兼容性 (IE 9+)。

所以,我的问题实际上如下:我知道 posted 隐藏的输入值总是被服务器正确读取。但是我不确定是否也是这种情况,如果值(我想要 post)是 <button> 标签的 "value" 属性的一部分。

非常感谢您的宝贵时间!

P.S:为了清楚起见,我准备了一个示例。它包含我问题中每个选项的表格。当提交其中一个表单时,会在 PHP 中读取相应的值。相关的是用户 ID 值。

<?php
if (isset($_POST['submitUserId']) && !empty($_POST['submitUserId'])) { // Submitted values.
    $userId = $_POST['submitUserId'];
    $userName = $_POST['userName'];

    echo 'Posted user id: ' . $userId;
    echo '<br/>';
    echo 'Posted user name: ' . $userName;

    // Save the new values in db...
} else { // Initial values fetched from db.
    $userId = 123;
    $userName = 'Valentine';

    echo 'Initial user id: ' . $userId;
    echo '<br/>';
    echo 'Initial user name: ' . $userName;
}
?>

<!DOCTYPE html>
<html>
    <head>
        <meta charset="UTF-8">
        <title>Test - Submit button value vs. hidden input value</title>
    </head>
    <body>

        <h4>Option 1: Submit <i>user id</i> as submit button value</h4>

        <form action="" method="post" id="formButtonValue" name="formButtonValue">
            <input type="text" id="userName" name="userName" value="<?php echo $userName; ?>" />

            <button type="submit" id="submitUserId" name="submitUserId" value="<?php echo $userId; ?>">
                Submit user details
            </button>
        </form>

        <h4>VS.</h4>

        <h4>Option 2: Submit <i>user id</i> as hidden input value</h4>

        <form action="" method="post" id="formHiddenInputValue" name="formHiddenInputValue">
            <input type="text" id="userName" name="userName" value="<?php echo $userName; ?>" />

            <input type="hidden" id="submitUserId" name="submitUserId" value="<?php echo $userId; ?>" />

            <button type="submit" id="submitButton" name="submitButton">
                Submit user details
            </button>
        </form>

    </body>
</html>

在提交数据的过程中,完全没有区别。

服务器端永远不会知道或关心客户端如何显示或处理输入。

事实上,在您的代码中,value 作为隐藏输入中的那个和按钮中的那个,对用户都是隐藏的。

没有区别

提交用户 ID 作为提交按钮值(var_dump($_POST))

array(2) { ["userName"]=> string(9) "Valentine" ["submitUserId"]=> string(3) "123" } 

提交用户 ID 作为隐藏输入值(var_dump($_POST))

array(3) { ["userName"]=> string(9) "Valentine" ["submitUserId"]=> string(3) "123" ["submitButton"]=> string(0) "" }