我怎么能在下面$ _POST

时间:2012-04-02 20:45:33

标签: php javascript

下面是我的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,那么我怎么能发布问题数字呢?

5 个答案:

答案 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