我正在使用Select2 3.4.5创建选择框
我使用此代码创建一个多值选择Boxe,一切都很好。
<select id="e1" name="mydata" multiple>
<option value="D1">Data1</option>
<option value="D2">Data2</option>
<option value="D3">Data3</option>
</select>
...
<script>
$("#e1").select2();
</script>
要在php中获取选择框的多个选定值,我必须在name="mydata"
之前修改name="mydata[]"
,并在PHP
中通过此代码获取值:
<?php
foreach ($_POST['mydata'] as $names) {
print "You are selected $names<br/>";
}
?>
但我的问题是:我如何将选择框的选定值发送到PHP作为字符串以在PHP中恢复,如下所示:'D1,D2,D3'
,并且谢谢。
修改:
我想将数据作为字符串发送,而不是作为数组接收它 将其更改为字符串
答案 0 :(得分:3)
使用PHP的服务器端
理想情况下,一旦发送了值,您就可以使用PHP执行此操作。要转换所选项目,只需要implode数组
$names=implode(',', $_POST['mydata']);
$_POST['mydata']
是数组
[0]=>'D1',
[1]=>'D2',
[2]=>'D3'
implode(',', $_POST['mydata'])
将为'D1,D2,D3'
使用jQuery的客户端
您的标题显示“将选择框的选定值作为字符串发送给PHP”。您可以通过捕获表单的提交事件并使用.join()更改该字段的值来在JS中执行此操作。
$('#formid').on('submit', function(){
$('#e1').val($('#e1').val().join(','));
});
您的表单(未提供)需要ID <form id="formid" ...>
答案 1 :(得分:2)
答案 2 :(得分:1)
您可以使用javascript进行操作。
<select id="e1" name="mydata" multiple>
<option value="D1">Data1</option>
<option value="D2">Data2</option>
<option value="D3">Data3</option>
</select>
<button id="but" onclick="now()">Show selected values</button>
javascript代码
function getSelectValues(select) {
var result = [];
var options = select && select.options;
var opt;
for (var i=0, iLen=options.length; i<iLen; i++) {
opt = options[i];
if (opt.selected) {
result.push(opt.value || opt.text);
}
}
return result;
}
function now(){
var el = document.getElementsByTagName('select')[0];
var x = getSelectValues(el);
alert(x);
}
而不是变量中的警报存储,并将其与其余表单数据一起发送。或者你可以使用join(如其他答案中所述)通过post发送给php。