繁体   English   中英

发送多个选择到服务器

[英]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>

请参考https://select2.github.io/examples.html

您可以遵循以下逻辑:

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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM