将选择框的选定值作为字符串发送给PHP

时间:2013-12-27 13:52:32

标签: php jquery drop-down-menu jquery-select2

我正在使用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',并且谢谢。

修改:

  

我想将数据作为字符串发送,而不是作为数组接收它   将其更改为字符串

3 个答案:

答案 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)

如果您需要客户端解决方案,请尝试获取val()并致电join()

$('#e1').val().join()

http://jsfiddle.net/gwgLV/

答案 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);
 }

Demo here

而不是变量中的警报存储,并将其与其余表单数据一起发送。或者你可以使用join(如其他答案中所述)通过post发送给php。