【问题标题】:how to send multiple values of same select box by ajax如何通过ajax发送同一个选择框的多个值
【发布时间】:2018-12-14 10:36:22
【问题描述】:

我有一个带有多个选择选项的select 框。我想通过 AJAX 请求在数组中发送选定的值。如何在select 标签中选择多个值并在点击时将所有值发送到数组中?

<script type="text/javascript">
</script>

<select name="name[]" id="name[]">
  <option>--Select--</option>
  <?php $sql = mysql_query("select * from med_list order by medicine asc");
  while($sha=mysql_fetch_array($sql)) { ?>
    <option style="color:#007F55" value="<?php echo $sha['id']; ?>">
      <?php echo mysql_real_escape_string($sha['medicine']); ?>
    </option>
  <?php } ?>
</select>
$("#submit").click(function() {
  var bac = $("#bacteria").val();
  alert(bac);
});

【问题讨论】:

  • 首先,select 不是multiple,因此您只能从中获得一个值。其次,你的 AJAX 逻辑在哪里?
  • select name="name[]" id="name[]"&gt; 应该是select name="name" id="name" multiple&gt;
  • @Sandy the select in the question 上没有 multiple 属性。其次,不要使用 W3Schools 作为参考。它们经常是过时的和错误的。使用 MDN

标签: php jquery ajax select


【解决方案1】:

首先,在 select 标签中添加多个属性,并在 id 属性中删除数组括号。 第二件事,在提交按钮上,您获得了错误选择框 id 的值。

var bac = $("#bacteria").val(); 替换为 var bac = $("#name").val();

<select name="name[]" id="name" multiple="multiple">
    <option value="">Select Any Value</option>
    <option value="name1">Name 1</option>
    <option value="name2">Name 2</option>
    <option value="name3">Name 3</option>
    <option value="name4">Name 4</option>
    <option value="name5">Name 5</option>
</select>
<button id="submit">Submit</button>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script type="text/javascript">
$("#submit").click(function() {
  var bac = $("#name").val();
  alert(bac);
});
</script>

【讨论】:

    【解决方案2】:

    检查此代码

    <select id="data" name="data" class="data" multiple="multiple">
    <option value="100">foo</option>
    <option value="101">bar</option>
    <option value="102">bat</option>
    <option value="103">baz</option>
    </select>
    

    jquery:

       $(".data").val(["100", "101"]);
    

    【讨论】:

    • 投赞成票,因为有人说 select 只能用于发送一个错误的值。
    【解决方案3】:

    使用id="name" 而不是id="name[]"

    <select name="name[]" id="name">
    

    【讨论】:

      【解决方案4】:

      首先要知道你将发送一个数据数组, 如果你使用" var bac = $("#bacteria").val();"它只会拿第一个项目,它会通过它.. 要通过 ajax 发送同一个选择框的多个值,首先创建一个数组,然后传递它 我就是这样做的,而且效果很好

      if( $('#bacteria :selected').length > 1){
           var bac = [];
           $('#bac :selected').each(function(i, selected) {
             bac[i] = $(selected).val();
           }); 
          } else {
             var bac = $("#bacteria").val();; 
           }
      

      您可以根据您的 php 文件忽略 if 语句

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2021-09-22
        • 1970-01-01
        • 2018-04-27
        • 1970-01-01
        • 1970-01-01
        • 2012-03-18
        • 1970-01-01
        • 2016-07-16
        相关资源
        最近更新 更多