【问题标题】:How to send multiple Select2 value to ther server in ajax Parameter如何在 ajax 参数中将多个 Select2 值发送到服务器
【发布时间】:2017-08-29 06:32:07
【问题描述】:

我在我的 wep 页面中使用了一个 select2 下拉菜单,我想使用 ajax 参数将选定的值发送到 servlet,我在 Ajax 下尝试过,但它不适合我。

我的 HTML Select 代码

<select class="form-control select2" id="color" name="color" multiple="multiple" data-placeholder="Select Colors">
    <option>Red</option>
    <option>Blue</option>
    <option>Green</option>
    <option>Gray</option>
</select>

我的Ajax代码:

     $.ajax({
         type: 'POST',
         url: 'MyServerUrl',                                
         data: {
            color: $("#color").select2('data') 
            },
         success: function (data, textStatus, jqXHR){
         },
         error: function (data, textStatus, jqXHR) {
         }
     });

有没有办法将 Direct 对象发送到 Ajax 参数?

【问题讨论】:

  • 不确定 jQuery 的做法,但 document.getElementById('color'). value 将获得选定的值。
  • 你为什么不说问题是在 Java Servlet 中读取 POST 正文?
  • 是的,实际上我正在 servlet 中访问该参数值:` String[] outerArray = request.getParameterValues("color");` 但没有进入 outerArray

标签: javascript jquery ajax jquery-select2


【解决方案1】:

只需使用 val() 并在 post 变量名称后面添加括号

 $.ajax({
      type: 'POST',
      url: 'MyServerUrl',
      data: {
          'color[]': $('select.select2').val()
      },
      success: function (data, textStatus, jqXHR){

      },
      error: function (data, textStatus, jqXHR) {
      }
 });

它应该做魔术:)

【讨论】:

  • @Marko,我试过了,但是不行。在 Servlet 上,当我尝试使用 request.getParameterValues("color") 获取 color 参数值时,我也尝试了 request.getParameter("service_type") 但我没有得到任何值:(
【解决方案2】:

$("#color").val(); 将为您提供一个包含选定值的数组。例如:

["red", "blue", "gray"]

但仍然必须为您的选项定义值,因为它们现在没有价值。

<select class="form-control select2" id="color" name="color" multiple="multiple" data-placeholder="Select Colors">
    <option value="red">Red</option>
    <option value="blue">Blue</option>
    <option value="green">Green</option>
    <option value="gray">Gray</option>
</select>

使用相同的val 方法,您还可以通过编程方式设置值: $("#color").val(["blue", "red"]).trigger("change");

【讨论】:

  • 嗨 Nico,我试过 $("#color").val() 但它给了我逗号分隔的字符串,我无法在 ajax 参数中传递。
  • 如果你打印它,它看起来像一个逗号分隔的字符串,是的。但它实际上是一个数组,因此完全可以在您的 POST 请求正文中传递 color: $("#color").val()。就试一试吧。在后端,大概是Java,像List&lt;String&gt;一样解析它。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-08-03
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-11-20
相关资源
最近更新 更多