【问题标题】:PHP: Submitting form data via $_POST works for all fields except radio buttonsPHP:通过 $_POST 提交表单数据适用于除单选按钮以外的所有字段
【发布时间】:2015-09-05 12:45:12
【问题描述】:

我是 PHP 新手,希望有人可以帮助我。

我有一个带有许多输入和文本区域的 HTML 表单。在提交时,我将表单传递到另一个 PHP 页面,该页面生成一封包含其值的电子邮件。

对于文本输入和文本区域,一切都按预期工作,但对于单选按钮,我无法让它显示目标页面上的值。

单选按钮如下所示,其中使用的类仅用于应用一些 CSS。 提交页面上只有一个表单,所有收音机都具有相同的名称(“requestType”),并且没有其他元素使用此名称。
此外,我添加了一个快速的 JavaScript sn-p 进行测试,以提醒他们对变化的价值,这也很有效,所以问题似乎只出在 $_POST 上。

谁能告诉我我在这里做错了什么或者我可以在这里尝试什么替代方案?

我的 HTML(在提交页面上):

<input type="radio" class="customRadio radioDefault" id="requestType1" name="requestType" value="Value1" />
    <label for="requestType1">Value1</label>
<input type="radio" class="customRadio triggerDiv" id="requestType2" name="requestType" value="Value2" />
    <label for="requestType2">Value2</label>

我的 PHP(在目标页面上):

$_POST["requestType"]

更新:
根据 RiggsFolly,我尝试检查它是否识别出一个单选按钮已被选中,它看起来确实如此,它只是不返回任何内容,因为以下只返回“xx”:

if(isset($_POST['requestType'])){
    $theSelectedOne = $_POST['requestType'];
    echo "radio value: x" . $theSelectedOne . "x";
}else{
    echo "boohoo";
}

【问题讨论】:

  • 我猜这就是表格中的全部内容?
  • isset($_POST['requestType']) ? $_POST['requestType'] : 'not set DEFAULT value';
  • @nicael:是的,单选按钮和所有其他字段都在同一个表单中。
  • @Fred-ii- 永远欢迎我的朋友

标签: php forms post radio-button


【解决方案1】:

单选按钮(和复选框)仅在实际选中时才会以 $_POST 或 $_GET 数组的形式传回表单。我注意到您在创建 HTML 时不会自动检查其中之一,因此如果用户不进行选择,则可能不会返回任何内容。

所以测试他们是否被检查的最好方法是测试他们的名字在 $_POST 数组中的存在

if ( isset( $_POST['requestType'] ) ) {
    // a selection was made
    // so now test the value to see which one was checked
    $theSelectedOne = $_POST['requestType'];
}

【讨论】:

  • 非常感谢。我会检查一下。表单是动态生成的,我使用 JS 在页面加载时使用以下内容检查所有具有“radioDefault”类的单选按钮:find('input[type=radio].radioDefault').prop('checked', true);
  • 更新:这很奇怪。因此,我尝试了您的方法并添加了一个警报,以防 iff 语句不正确,但它确实说它是正确的,只是没有返回任何内容 - 我会将测试代码添加到上面的帖子中。
  • 我发现了问题 - JS 覆盖了该值。所以这个问题解决了。但是,您的建议将我推向了正确的方向。很抱歉,感谢您的帮助,这绝对是一个! :)
  • @keewee279 很好,但是马上发布你的 JS,会更快地解决它; 只是说 ;-) 我感觉这就是问题所在,或者起到了重要作用,就像I stated in this comment... 7 mins.after your original post。
猜你喜欢
  • 1970-01-01
  • 2016-12-05
  • 2012-01-16
  • 2019-09-25
  • 2013-01-21
  • 1970-01-01
  • 1970-01-01
  • 2011-01-09
  • 1970-01-01
相关资源
最近更新 更多