[英]Sending Multiple select to server
我正在使用具有多个选择的表单(使用Select2),然后使用HTML5的Formdata对象将数据提交到服务器。 当我发送文本或文件时,它工作良好,但在这种情况下不起作用。
我已经根据需要将名称属性指定为lbl [],并且还指定了multiple =“ multiple”。
Formdata是否支持多项选择,或者我缺少什么?
我的选择:
<select class="form-control theread_p_ip" name="thread_p[]" multiple="multiple" style="width: 100%"></select>
我使用Formdata的方式:
form_data = new FormData($(mydata.sform)[0]);
ajaxoptions.data=form_data;
其中ajaxoptions是我传递给JQuery AJAX的对象,而$(mydata.sform)[0]选择我的表单
我已经使用print_r($_POST,true)
,我得到了:
Array
(
[thread_p] =>
[thread_lbl] => giggg
[ddemand] => json
[dtype] => json
[eltarget] => -1
[sform] => #ta-tbxnewthread
[mkey] => tbx_newthread
)
您可以看到thread_p为空。 如果我指定name =“ thread_p”而不是使用[],那么我将单独获得最后选择的值。
PS:忽略数组中的其他值。 这些是我从客户端发送的其他参数。
而且,如果您想知道select中没有任何选项,则可以通过运行正常的select2通过AJAX加载它们。
更新:使用黑客的小提琴解决了: https : //jsfiddle.net/95khdzp2/1/
在服务器端,您会得到以','分隔的值,必须使用explode(',', $variable);
进行分隔explode(',', $variable);
如果您使用的是PHP
根据select2文档,您不需要给出名称数组,只需给出名称,这里name =“ thread_p”
根据文档,提供了一个示例,
$(".js-example-basic-multiple").select2();
<select class="js-example-basic-multiple" multiple="multiple">
<option value="AL">Alabama</option>
...
<option value="WY">Wyoming</option>
</select>
您可以遵循以下逻辑:
var ajaxOptions = {};
ajaxOptions.data = {};
$(function(){
$(".theread_p_ip").select2();
$(".theread_p_ip").change(function(){
ajaxOptions.data.mySelect2 = $(this).val();
console.log(ajaxOptions);
});
});
这样,您的ajaxOptions
Object
可以基于select2
更改来更新其值。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.