将选择框的选定值作为字符串发送到 PHP
Posted
技术标签:
【中文标题】将选择框的选定值作为字符串发送到 PHP【英文标题】:send selected values of select box to PHP as string 【发布时间】:2014-01-15 02:50:20 【问题描述】:我使用Select2 3.4.5 创建选择框,
我使用此代码创建一个多值选择框,一切都很好。
<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/>";
?>
但我的问题是:如何将选择框的选定值作为 string 发送到 PHP,以便像这样在 php 中恢复:'D1,D2,D3'
,谢谢。
编辑:
我想将数据作为字符串发送,而不是作为数组接收 改成字符串
【问题讨论】:
@DainisAbols Select2 使其具有吸引力。它实际上与问题无关。 就用implode()? 【参考方案1】:使用 PHP 的服务器端
理想情况下,一旦发送值,您将使用 PHP 执行此操作。要将选中的项目转换成implode数组
$names=implode(',', $_POST['mydata']);
$_POST['mydata']
是一个数组
[0]=>'D1',
[1]=>'D2',
[2]=>'D3'
implode(',', $_POST['mydata'])
将是 'D1,D2,D3'
带有 jQuery 的客户端
您的标题是“将选择框的选定值作为字符串发送到 PHP”。您可以在 JS 中通过捕获表单的提交事件并使用 .join() 更改该字段的值来实现。
$('#formid').on('submit', function()
$('#e1').val($('#e1').val().join(','));
);
您的表单(未给出)需要一个 ID <form id="formid" ...>
【讨论】:
我想将数据作为字符串发送,而不是作为数组接收,然后将其更改为字符串 我也给了这个选项。【参考方案2】:如果您需要客户端解决方案,请尝试获取val()
并致电join()
:
$('#e1').val().join()
http://jsfiddle.net/gwgLV/
【讨论】:
【参考方案3】:你可以用 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);
Demo here
而不是将警报存储在变量中并将其与表单数据的其余部分一起发送。或者您可以使用 join (如其他答案中所述)将其通过 post 发送到 php。
【讨论】:
以上是关于将选择框的选定值作为字符串发送到 PHP的主要内容,如果未能解决你的问题,请参考以下文章