隐藏的INPUT值在$ _POST中不可用

时间:2014-10-15 03:25:00

标签: javascript php html post

我有一个表单,我使用JavaScript来设置hidden INPUT field的值,OPTION selected$_POST的文本。 OPTION会捕获hidden INPUT的值,但不会捕获hidden INPUT的值。 OPTION用于传递$_POST文字,因此可在array var sele = document.getElementById('building_type'); var seleVal = sele.options[sele.selectedIndex].value; var seleTxt = sele.options[sele.selectedIndex].text; 中使用。

这是用于获取所选OPTION

的值和文本的JavaScript部分
    document.getElementById("other_hidden_text").value = seleTxt;

这是我在同一个JavaScript中设置ID为“other_hidden_​​text”的INPUT字段的值。

$_POST['other_hidden_text']

我的问题是{{1}}是空的。有什么想法吗?

2 个答案:

答案 0 :(得分:1)

似乎隐藏的input元素不属于form元素。在HTML中,如果要使用输入元素,则需要将它们包含在form中,并指定提交数据的位置,并在表单的属性中使用哪种方法(POST或GET)。

 <form action="server_side_code.php" method="post">
     <input type="text" name="value1" />
     <input type="hidden" name="value2" /> <!-- OK -->
     <input type="submit" />
 </form>

 <input type="hidden" name="value3" /> <!-- Will not be sent to anywhere -->

使用适当的工具,您可以检查浏览器实际发送到服务器端代码的数据(例如,您在$ _POST中搜索值的PHP文件)。例如:

  • 在Firefox中打开工具&gt; Web开发人员&gt;网络(或按Ctr + Shift + Q)
  • 在Chrome中打开更多工具&gt;开发人员工具(或按Ctrl + Shift + I)并选择网络选项卡。

(其他浏览器可能会提供此类工具,但我现在并未安装它们以介绍如何打开其开发人员工具。)

然后在提交表单后,将出现网络呼叫列表中的新行。单击它并查看发送到服务器端代码的参数。检查您的隐藏字段值是否存在。

如果你可以在那里看到隐藏的字段值,那么问题是你的JavaScript实际上并没有更新这个隐藏输入的值。也许它没有被触发。

答案 1 :(得分:0)

试试这个:

html代码:

<select id="building_type">
    <option value='somevalue1'>value1</option>
    <option selected='yes' value='somevalue2'>value2</option>
</select>

<input type="hidden" name="somename" id="other_hidden_text" value=""/>

JavaScript代码:

var sele = document.getElementById('building_type');
var seleVal = sele.options[sele.selectedIndex].value;
var seleTxt = sele.options[sele.selectedIndex].text;

document.getElementById("other_hidden_text").value = seleTxt;

alert('selected: '+ document.getElementById("other_hidden_text").value);

还可以假设您没有指定正确的隐藏元素或选择元素。例如,不是所有属性。