【问题标题】:Radio buttons submitting no values单选按钮不提交值
【发布时间】:2015-09-19 20:10:09
【问题描述】:

这看起来(并且应该)很简单,但我不知道为什么我的单选按钮的值显示为空

<!DOCTYPE html>
<html>
<body>

<form method="post" action="action_page.php">

<table>
<tr>
<th>Intermediate</th><th>Advanced</th><th>No selection</th>
</tr>

<tr>
            <td colspan="3">
                <label for="td1">1. Bash</label>
            </td>
        </tr>
    <tr>
        <td>
            <input type="radio" name="td1" id="td1" value="BashInter"/>
        </td>
        <td><input type="radio" name="td1"  value="BashAdv"/>
        </td>
        <td><input type="radio"  name="td1" value="" /></td>
    </tr><tr>
            <td colspan="3">
                <label for="td1">2. C</label>
            </td>
        </tr>
    <tr>
        <td>
            <input type="radio" name="td2" id="td2" value="CInter"/>
        </td>
        <td><input type="radio" name="td2"  value="CAdv"/>
        </td>
        <td><input type="radio"  name="td2" value="" /></td>
    </tr><tr>
            <td colspan="3">
                <label for="td1">3. C++</label>
            </td>
        </tr>
    <tr>
        <td>
            <input type="radio" name="td3" id="td3" value="C++Inter"/>
        </td>
        <td><input type="radio" name="td3"  value="C++Adv"/>
        </td>
        <td><input type="radio"  name="td3" value="" /></td>
    </tr></table>


<input type="submit" value="Submit">
</form> 

<p>If you click "Submit", the form-data will be sent to a page called "action_page.php".</p>

</body>
</html>

如果在 W3Schools' (ugh) server 上运行,它会正确输出输入。 例如

td1=BashInter&td2=CAdv&td3=

但是,我的服务器,对于print_r($_POST); 的返回

[td1] => [td2] => [td3] =>

无论选择什么。

查看 HTTP 标头确认没有发送任何内容。

表单的所有其他方面都正确发送它们的值。

我已经尝试了许多与值相关的变体,但没有任何改变这样一个事实,即单选按钮实际上似乎没有发送任何数据。

【问题讨论】:

  • @billyonecan 这不是真正的形式(有几千行)。我正在使用 POST 和真实的。
  • 在示例代码中添加了 post 方法。请注意,除了单选按钮之外的所有内容都在正确发送数据。
  • 所以收音机已发布,但它们的值是空字符串?你确定你没有选择每组中的最后一个选项吗?
  • @billyonecan 我……不这么认为。我只是为最后一个选项提供了一个示例字符串“test”,以确保;但无论选择如何,仍然看起来是空的
  • @billyonecan 我终于找到了罪魁祸首。在所有可能的原因中 - 是 Sessionstorage! sessionStorage 如何导致这个问题,为什么 sessionStorage 会导致这个问题,以及我可以做些什么来阻止 sessionStorage 导致这个问题我还没有确定:/我没有在问题中提到 sessionStorage,因为我看不到它是如何相关的(仍然不相关!)

标签: html forms radio-button


【解决方案1】:

您没有指定表单必须作为 POST 发送,因此使用的方法默认为 GET。

试试

<form action="action_page.php" method="POST">

【讨论】:

    【解决方案2】:

    每组的最后一个单选按钮一直保持为空并具有黑色值。

    这意味着&lt;input type="radio" name="td3" value="" /&gt;需要替换为&lt;input type="radio" name="td3" value="Some value 3" /&gt;

    因此,如果您从每个集合中选择最后一个单选按钮,那么显然它不会返回任何内容。

    除此之外,只要您的 HTML 代码相关,就没有其他问题。如果您仍然遇到任何问题,请同时上传您的 PHP 代码。

    我还建议给每个收音机一些有意义的标签。

    这是您可以尝试的代码

    <!DOCTYPE html>
    <html>
    <body>
    
    <form method="POST" action="action_page.php">
    
    <table>
    <tr>
    <th>Intermediate</th><th>Advanced</th><th>No selection</th>
    </tr>
    
    <tr>
                <td colspan="3">
                    <label for="td1">1. Bash</label>
                </td>
            </tr>
        <tr>
            <td>
                <input type="radio" name="td1" id="td1" value="BashInter"/> BashInter
            </td>
            <td><input type="radio" name="td1"  value="BashAdv"/> BashAdv
            </td>
            <td><input type="radio"  name="td1" value="Some value 1" /> Some value 1</td>
        </tr><tr>
                <td colspan="3">
                    <label for="td1">2. C</label>
                </td>
            </tr>
        <tr>
            <td>
                <input type="radio" name="td2" id="td2" value="CInter"/> CInter
            </td>
            <td><input type="radio" name="td2"  value="CAdv"/> CAdv
            </td>
            <td><input type="radio"  name="td2" value="Some value 2" /> Some value 2</td>
        </tr><tr>
                <td colspan="3">
                    <label for="td1">3. C++</label>
                </td>
            </tr>
        <tr>
            <td>
                <input type="radio" name="td3" id="td3" value="C++Inter"/> C++Inter
            </td>
            <td><input type="radio" name="td3"  value="C++Adv"/> C++Adv
            </td>
            <td><input type="radio"  name="td3" value="Some value 3" /> Some value 3</td>
        </tr></table>
    
    
    <input type="submit" value="Submit">
    </form> 
    
    <p>If you click "Submit", the form-data will be sent to a page called "action_page.php".</p>
    
    </body>
    </html>
    

    【讨论】: