如何在post / get中获取多选下拉值的所有选定值?

时间:2014-11-13 02:26:19

标签: javascript php jquery

我有一个带有多选下拉列表的表单,在提交时,值通过 Seralize 传递给ajax,但只有一个多选下拉列表的值被传递,我在该下拉列表中选择了更多选项。

var formdata= $("#form").serialize();
$.ajax(
{               
    url:base_url+"index.php/model/employee",  
    data: "employeedata="+employeeformdata,
    success: function(msg)
    { 
    //success message
    },                     
});

我试图通过mval=$('#multi').val();手动获取值并将其附加到url,因为我有一个动态表单我不能指定多选下拉列表的ID,一个表单可以有多个多选下拉列表,有没有在serialize / serializeArray上传递值的方法?

2 个答案:

答案 0 :(得分:1)

不是序列化,你可能没有给你的选择选项赋值,但试试看:

http://jsfiddle.net/94q7kcub/

dummycode

<强> jQuery的:

$('#clicker').click(function(){
var multiselect = $('#marketplaces').val();
alert(multiselect);
});

<强> HTML:

<label for="marketplaces">Marketplaces:</label>
    <select class="select2" multiple id="marketplaces">
        <option value="DE">Germany</option>
        <option value="UK">United Kingdom</option>
        <option value="FR">France</option>
        <option value="ES">Spain</option>
        <option value="IT">Italy</option>
        <option value="US">United States</option>
</select>
<button id="clicker">click</button>

答案 1 :(得分:1)

.serialize()方法返回一个如下所示的字符串:

selectNameA=valueA1&selectNameA=valueA2&selectNameB=valueB1

在使用jQuery通过ajax提交表单时,通常会使用以下内容:

data: $("#form").serialize(),

假设您在服务器上使用PHP(因为问题标记为PHP),您将希望select元素的“name”属性的值以“[]”结尾。 (见this question。)

<select name="xxx[]" ...

这样,$_GET['xxx']将是一个包含所有选定值的数组。

注意:如果您在ajax调用中指定type: 'post',则可以在服务器上使用$_POST,而不是$_GET