【问题标题】:send selected values of select box to PHP as string将选择框的选定值作为字符串发送到 PHP
【发布时间】: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()?

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


【解决方案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。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2019-09-02
      • 1970-01-01
      • 2015-09-27
      • 1970-01-01
      • 2014-11-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多