【发布时间】:2015-12-16 12:14:43
【问题描述】:
我正在使用具有多个选择的表单(使用 Select2)并使用 HTML5 的 Formdata 对象将数据提交到服务器。它在我发送文本或文件时效果很好,但在这种情况下不起作用。
我已根据需要将 name 属性指定为 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/
在服务器端,你会得到用“,”分隔的值,如果你使用 PHP,你必须使用 explode(',', $variable); 来分隔
【问题讨论】:
-
ajaxoptions.data.mySelect2=$(".theread_p_ip").val();?? -
不。 select2 只是我正在使用的一个插件。 select2.github.io没有变量data.mySelect2
-
你试过了吗..或者你已经解决了??
-
我试过了。它不起作用。
-
也许你做错了:jsfiddle.net/95khdzp2/1 ...只需检查控制台
标签: javascript php jquery ajax