Php jquery提交未传递表单值
我在初始页面加载时创建的表中嵌入了一个表单:Php jquery提交未传递表单值,php,jquery,forms,Php,Jquery,Forms,我在初始页面加载时创建的表中嵌入了一个表单: echo "<form id='showbooking' action='calendar.php' method='post'>"; echo "<td name='clickedcalid' value='" . $resarr[$k]['calid']; echo "' title='" . $resarr[$k]['coms'] . "' class='hols'>"; echo $resarr[$k]['typ']
echo "<form id='showbooking' action='calendar.php' method='post'>";
echo "<td name='clickedcalid' value='" . $resarr[$k]['calid'];
echo "' title='" . $resarr[$k]['coms'] . "' class='hols'>";
echo $resarr[$k]['typ'] . "</td></form>";
我在单击表中的单元格时提交表单,并希望传递所单击单元格的值
<script>
$(".hols").click(function() {
$("#showbooking").submit();
})
</script>
重新加载后,我将使用以下内容进行测试:
echo "<p> ID of clicked booking was: " . $_POST['clickedcalid']; . "</p>";
但是这个值没有被传递,我不知道为什么
可能是因为表单嵌入了一个表中?您不能将tr元素放入其中,包装td。说
允许含量:零或多个元素,或它们的混合
另外,value属性对于td元素无效。您需要重新构造标记
echo '<td class="hols" title="' . $resarr[$k]['coms'] . '">' .
'<form id="showbooking" action="calendar.php" method="post">' .
'<input type="hidden" name="clickedcalid" value="' . $resarr[$k]['calid'] . '">' .
$resarr[$k]['typ'] .
'</form>' .
'</td>';
首先,表单元素需要进入td内部。其次,表单提交中仅发送表单元素的值,即输入、选择、文本区域等。请尝试以下操作:
echo '<td class="hols" title="' . $resarr[$k]['coms'] . '">';
echo '<form id="showbooking" action="calendar.php" method="post">';
echo '<input type="text" name="clickedcalid" value="' . $resarr[$k]['calid'] . '" />';
echo $resarr[$k]['typ'] . '</form></td>';
要从$\u POST中获取值,您需要有输入标记
echo "<form id='showbooking' action='calendar.php' method='post'>";
echo "<td><input type='text' name='clickedcalid' value='" . $resarr[$k]['calid'];
echo "' title='" . $resarr[$k]['coms'] . "' class='hols' />";
echo $resarr[$k]['typ'] . "</td></form>";
谢谢,
Naumche包裹td OO的表单标记应该有一个名为clickedcalid tds的输入元素不会传递数据使用表单元素,比如必须是的子元素。太好了,这很有效。我觉得这似乎是一个很糟糕的做法,你能建议从另一个角度来看它吗?你为什么使用文本输入?在OP的代码中,td的value属性不应该在页面上呈现work@AlistairWeir,那么你为什么不首先使用我的答案呢?我原以为你的修改是在这篇文章发布之后才进行的,但看起来不是这样。这两个都是很好的答案。