【问题标题】:How to get value of Selected items of Select2 when submitted?提交时如何获取Select2的选定项的值?
【发布时间】:2019-11-07 06:49:10
【问题描述】:

当我提交表单时,我应该设置哪些选项来获取选项的值?

我正在使用 Select2。我已经给出了我必须设置 select2 的代码、返回数据的控制器、呈现元素的 html 代码。

添加select2元素的HTML代码:

<div class="form-group row"><label class="col-lg-2 col-form-label">Keyword</label>
  <div class="col-lg-10">
      <select class="form-control w-50" name="keywords[]"     id="keyword" multiple="multiple">
     </select>
   <span class="form-text m-b-none">One or multiple keywords</span>
 </div>
</div>

数据源是一个 Ajax 调用:

$(document).ready(function() {
    $('#keyword').select2({
        tags: true,
        tokenSeparators: [',', ' '],

   placeholder: 'Select keyword',
    ajax: {
      url: 'https://rankypro.dev/app/json/keywords',
      dataType: 'json',
      delay: 250,
      processResults: function (data) {
        return {
          results:  $.map(data, function (item) {
                return {
                    text: item.name,
                    id: item.id
                }
            })
        };
      },
      cache: true
    }
  });

控制器:

public function getKeywords(Request $request){

    $search = $request->search;

    if($search == ''){
        $keywords = Term::orderby('name','asc')
                    ->select('id','name')
                    ->where('taxonomy','keyword')
                    ->limit(5)
                    ->get();
     }else{
        $keywords = Term::orderby('name','asc')->select('id','name')
                        ->where('taxonomy','keyword')
                        ->where('name', 'like', '%' .$search . '%')
                        ->limit(5)
                        ->get();
     }

   $results = array();
        foreach($keywords as $keyword){
            $results[] = array(
                "id"=>$keyword->id,
                "text"=>$keyword->name
            );
        }
   echo json_encode($results);
   exit();
}

我正在测试:

public function store(Request $request)
{

    dd($request->keywords);
}

我得到以下信息:

array:2 [
     0 => "Tools"
     1 => "SEO"
  ]

我实际上需要关键字的 ID。请您提供一些提示,我该如何获得它。

【问题讨论】:

    标签: laravel-5 jquery-select2


    【解决方案1】:

    我认为它们在渲染数据方面存在一些问题。尝试替换

    processResults: function (data) {
            return {
              results:  $.map(data, function (item) {
                    return {
                        text: item.name,
                        id: item.id
                    }
                })
            };
          }, 
    

    processResults: function (data) {
    
          return {
            results: data.item
          };
        },
    

    select2 自动渲染 id 和 name。

    【讨论】:

    • 试过了。不工作。得到错误。 Query.Deferred 异常:无法读取未定义的属性“长度”类型错误:无法读取未定义的属性“长度”
    • 你能给我演示一下吗?那么只有我才能找到合适的解决方案。
    • 我该怎么做?
    • 我已经修好了。在将数据添加到 Select2 之前,我需要将数据转换为所需的格式。 snipboard.io/RboOym.jpg
    猜你喜欢
    • 2018-03-27
    • 1970-01-01
    • 2017-12-10
    • 1970-01-01
    • 1970-01-01
    • 2018-04-05
    • 1970-01-01
    • 2016-03-31
    • 2018-03-17
    相关资源
    最近更新 更多