Javascript 将多个选择发送到服务器

Javascript 将多个选择发送到服务器,javascript,php,jquery,ajax,Javascript,Php,Jquery,Ajax,我正在使用一个具有多个选择的表单(使用Select2),并使用HTML5的Formdata对象将数据提交给服务器。当我发送文本或文件时,它运行良好,但在这种情况下不起作用 我已根据需要将name属性指定为lbl[],并指定了multiple=“multiple” Formdata是否支持多重选择,或者是否缺少任何内容 我的选择: <select class="form-control theread_p_ip" name="thread_p[]" multiple="multiple" s

我正在使用一个具有多个选择的表单(使用Select2),并使用HTML5的Formdata对象将数据提交给服务器。当我发送文本或文件时,它运行良好,但在这种情况下不起作用

我已根据需要将name属性指定为lbl[],并指定了multiple=“multiple”

Formdata是否支持多重选择,或者是否缺少任何内容

我的选择:

<select class="form-control theread_p_ip" name="thread_p[]" multiple="multiple" style="width: 100%"></select>
其中ajaxoptions是我传递给JQuery AJAX的对象,$(mydata.sform)[0]选择我的表单

我已经使用
print\r($\u POST,true)
进行了检查,我得到了以下结果:

Array
(
[thread_p] => 
[thread_lbl] => giggg
[ddemand] => json
[dtype] => json
[eltarget] => -1
[sform] => #ta-tbxnewthread
[mkey] => tbx_newthread
)
您可以看到线程p是空的。如果我指定name=“thread\u p”而不是使用[],我只会得到最后一个选择的值

PS:忽略数组中的其他值。这些是我从客户端发送的其他参数

如果您想知道select中没有选项,那么select2会通过AJAX加载这些选项,这是正常工作的

更新:使用哈克曼的小提琴解决:


在服务器端,您可以得到由“,”分隔的值,必须使用
explode(“,”,$variable)分隔这些值
如果您按照select2文档使用PHP,则不需要指定名称数组,只需指定名称,此处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>
$(“.js示例基本倍数”).select2();
阿拉巴马州
...
怀俄明州

请参考

您可以遵循以下逻辑:

var ajaxOptions = {};
ajaxOptions.data = {};
$(function(){
  $(".theread_p_ip").select2();

  $(".theread_p_ip").change(function(){
    ajaxOptions.data.mySelect2 = $(this).val();
    console.log(ajaxOptions);
  });
});

这样,您的
ajaxOptions
对象可以根据
select2
更改来更新其值。

ajaxOptions.data.mySelect2=$(“.theread\u p\u ip”).val()否。select2只是我正在使用的一个插件。没有变量数据。myselect2id您是否尝试过..或者您已经解决了它?我尝试过了。它不起作用。也许你做错了:……只要检查控制台,如果我没有给出[]符号,那么只发送一个值(在问题中指定)。我对它进行了测试。您尝试使用$('.theread\u p\u ip').val()获取select2 multiple的值。你会得到价值。我试过这个例子是的。这将给出值,但如果需要在服务器上获取,则需要使用[]符号。但是,如果您一直将客户端的所有onchange值存储在一个变量中,那么您就可以将变量发送到服务器,而不必担心[]符号。谢谢你。
var ajaxOptions = {};
ajaxOptions.data = {};
$(function(){
  $(".theread_p_ip").select2();

  $(".theread_p_ip").change(function(){
    ajaxOptions.data.mySelect2 = $(this).val();
    console.log(ajaxOptions);
  });
});