将选择框的选定值作为字符串发送到 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'

带有 jQ​​uery 的客户端

您的标题是“将选择框的选定值作为字符串发送到 PHP”。您可以在 JS 中通过捕获表单的提交事件并使用 .join() 更改该字段的值来实现。

$('#formid').on('submit', function()
    $('#e1').val($('#e1').val().join(','));
);

您的表单(未给出)需要一个 ID &lt;form id="formid" ...&gt;

【讨论】:

我想将数据作为字符串发送,而不是作为数组接收,然后将其更改为字符串 我也给了这个选项。【参考方案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的主要内容,如果未能解决你的问题,请参考以下文章

如何将枚举作为 devextreme 选择框的数据源

如何在C#中获得组合框的所有选定值

如何获取Javascript选择框的选定文本

如何将两个组合框的选定项与单个数据源分开?

如何在确认框的取消事件后强制 asp.net 列表框保留选定的值?

在 PHP Select Dropdown 中使用选定的选项作为变量