下面是我的javascript和表单代码,它为应用程序中附加的每个表行逐个附加一个问号(qnum)。因此,如果用户添加一个表行,则它包含问题编号1,当添加第二行时,添加问题编号2,然后添加第三行编号等等。
<script>
function insertQuestion(form) {
var $tbody = $('#qandatbl > tbody');
var $tr = $("<tr class='optionAndAnswer' align='center'></tr>");
var $qid = $("<td class='qid'>" + qnum + "</td>");
$tr.append($qid);
$tbody.append($tr);
++qnum;
$("#questionNum").text(qnum);
</script>
<form id="QandA" action="insertQuestion.php" method="post" >
<div id="detailsBlock">
<table id="question">
<tr>
<th colspan="2">
Question Number <span id="questionNum">1</span>
</th>
</tr>
</table>
</form>
我遇到的问题是我想在下一页中为所有添加的问题编号做$_POST
。唯一的问题是因为我没有使用输入字段,所以我没有$_POST
的名称属性。所以我想知道的是,如果我可以使用'name'属性$_POST
,那么我怎么能发布问题数字呢?
答案 0 :(得分:1)
你可以这样做。在标记中添加隐藏字段。隐藏变量将发回服务器,并在$ _POST中以其名称提供。我添加了以**开头并以**
结尾的2行<script>
function insertQuestion(form) {
var $tbody = $('#qandatbl > tbody');
var $tr = $("<tr class='optionAndAnswer' align='center'></tr>");
var $qid = $("<td class='qid'>" + qnum + "</td>");
$tr.append($qid);
$tbody.append($tr);
++qnum;
$("#questionNum").text(qnum);
**$("#num_questions").val(qnum);**
</script>
<form id="QandA" action="insertQuestion.php" method="post" >
**<input type="hidden" id ="num_questions" value="" name="num_questions">**
<div id="detailsBlock">
<table id="question">
<tr>
<th colspan="2">
Question Number <span id="questionNum">1</span>
</th>
</tr>
</table>
</form>
答案 1 :(得分:1)
回答您的问题和comment
@ocanal我在这里添加了一个隐藏的输入:var $ qid = $(“”+ qnum +“”);好事 是没有 $ _POST ['numQuestion']的通知,但坏消息是它确实如此 没收到一个 问题编号,它只是收到一个空白
是的,它会收到一个空白,因为您没有为隐藏的输入分配值。
你应该这样做,
var $qid = $("<td class='qid'><input type='hidden' name='numQuestion[]'
value='" + qnum +"' >"
+ qnum + "</td>");
发布表单后,您将获得numQuestion值作为数组。
例如,
print_r($_POST["numQuestion"]);
会打印出来,
Array
(
[0] => 1
[1] => 2
[2] => 3
[3] => 4
...
)
答案 2 :(得分:0)
理论上,您可以在下一页上获取您需要的信息,然后使用javascript动态创建具有正确name =“”和value =“”对的元素,以便将它们发送到后端服务器。这至少是一种方法。
答案 3 :(得分:0)
您可以尝试添加不可见的隐藏字段,但包含您想要的信息。您可以使用CSS来隐藏字段。这些字段将由您以类似&lt;形式的形式找到的常规内容构成。输入类型=文字&gt;
答案 4 :(得分:0)
每次添加一行时,您是否可以通过Ajex $_POST
每行,并将其存储在$_SESSION
?