如何从多选下拉菜单中获取值并将其与POST一起发送?

时间:2014-09-02 21:27:12

标签: javascript jquery html node.js twitter-bootstrap

我想要添加到表单中的这种多选下拉菜单

<form>
...
    <select id="example2" multiple="multiple">
        <div id="otherChoices">
            <optgroup label="Academic" class="blah">
                <option value="Engineering" class="blah">Engineering</option>
                <option value="Humanities">Humanities</option>
                <option value="Life_Sciences">Life Sciences</option>
                <option value="Social Sciences_Sciences">Social Sciences</option>
            </optgroup>
            <optgroup label="Clubs">
                <option value="Event">Event </option>
                <option value="Meeting">Meeting</option>
                <option value="Performance">Performance</option>
            </optgroup>
            <optgroup label="Personal">
                <option value="Discussion">Discussion</option>
                <option value="Event">Event</option>
                <option value="Food">Food</option>
                <option value="Hangout">Hangout</option>
                <option value="Trip">Trip</option>
            </optgroup>
        </div>
    </select>
</form>

但是我不确定这是什么类型的输入形式(它是一个自举创建形式但不是有效输入类型),所以我不确定如何发送参数通过邮寄请求。目前,我使用jquery来获取所选值并填写隐藏表单。有更好的方法吗?

2 个答案:

答案 0 :(得分:1)

您在HTML中犯了一些错误: 这是更正后的版本:

<form action="test2.php" method="post">
    <select name="example2[]" id="example2" multiple="multiple" >
        <div id="otherChoices" name="hello">
            <optgroup label="Academic" class="blah">
                <option value="Engineering" class="blah">Engineering</option>
                <option value="Humanities">Humanities</option>
                <option value="Life_Sciences">Life Sciences</option>
                <option value="Social Sciences_Sciences">Social Sciences</option>
            </optgroup>
            <optgroup label="Clubs">
                <option value="Event">Event </option>
                <option value="Meeting">Meeting</option>
                <option value="Performance">Performance</option>
            </optgroup>
            <optgroup label="Personal">
                <option value="Discussion">Discussion</option>
                <option value="Event">Event</option>
                <option value="Food">Food</option>
                <option value="Hangout">Hangout</option>
                <option value="Trip">Trip</option>
            </optgroup>
        </div>
    </select>
    <button type="submit">Submit</button>
</form>

编辑: 这是我纠正的:

  1. 我在带方括号的select中添加了一个名称值,以显示其数组
  2. 我在表单中添加了一个方法类型:method =&#34; post&#34;
  3. 提交按钮
  4. 然后,您可以访问以下各个项目:

    echo $_POST["example2"][0];
    
    编辑:对不起,我意识到这是Node.js那是一个用于PHP的。有关如何在节点js中获取post变量的信息,请参阅此链接:

    How do you extract POST data in Node.js?

答案 1 :(得分:0)

提交表单时,它会将数组传递到下一页,在表单的action属性中指定。如果未设置,则会提交到当前网址。

默认情况下,除非将GET属性设置为method,否则表单将使用post提交。

因此,请将<form>标记更改为以下内容:

<form method="post" action="test.php">

并向select name name="test_select"提供test.php

然后您的<?php print_r($_POST); 可能如下所示:

?>

(不需要$_POST结束标记)

这将打印{{1}}数组,您将看到多个选项如何工作。