我有一个带有多选下拉列表的表单,在提交时,值通过 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上传递值的方法?
答案 0 :(得分:1)
不是序列化,你可能没有给你的选择选项赋值,但试试看:
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
。