使用 select2 和 ajax laravel 资源进行多选

Posted

技术标签:

【中文标题】使用 select2 和 ajax laravel 资源进行多选【英文标题】:Multi select with select2 and ajax laravel resource 【发布时间】:2020-10-28 03:18:42 【问题描述】:

对于我的系列形式,我需要让所有演员都准备好进行选择。我有很多演员,我需要用 api 来获取他们。

我做了一个演员资源:

<?php

namespace App\Http\Resources;

use Illuminate\Http\Resources\Json\JsonResource;

class ActorResource extends JsonResource

    /**
     * Transform the resource into an array.
     *
     * @param  \Illuminate\Http\Request  $request
     * @return array
     */
    public function toArray($request)
    
       // return parent::toArray($request);
       
       return [
        'id'=> $this->id,
        'name'=> $this->name,
        
    ];
    

  

有路线:

Route::get('/actor', function () 
    return ActorResource::collection(Actor::all());
);


Route::get('/actor/actor', function (Actor $actor) 
    return new ActorResource($actor);
);

在我的刀片中:

<label for="creators" class="label">Créateur</label>
        <select class="form-control tags-selector" id="creators" name="creators[]" multiple="multiple">
           
        </select>

<script>

    $(document).ready(function() 
        $('.tags-selector').select2(
            minimumInputLength: 2,
            ajax: 
                url: '/api/actor',
                dataType: 'json',
                delay: 250,
            ,
        );     
    );

</script>

<script src="https://cdn.jsdelivr.net/npm/select2@4.1.0-beta.1/dist/js/select2.min.js"></script>

什么都没有工作......我怎样才能在之后获得选定的值?

这是对大表进行多选的正确方法吗?

【问题讨论】:

你不应该把成功方法放在ajax中还是我错过了什么? 我不知道,这对我来说都是新的..我该怎么说? 【参考方案1】:
$(document).ready(function() 
    $('.tags-selector').select2(
        minimumInputLength: 2,
        $.ajax: 
            method:'get'// I am assuming this is a get method
            url: '/api/actor',
            dataType: 'json',
            delay: 250,
            success: function (data) 
                 console.log(data)//after you see the structure of data, try smt like 
                 //this. You should change this part acording yo your data
                  for(int i =0;i<data.data.lenght;i++)
                      $("#creators").append(new Option(data.data[i].name, data.data[i].id));          
                  
            ,
            error: function (error) 
                    console.log(error);
           ,
        ,
    );     
);

嗯,希望对你有帮助。我也不是他们的专家。让我知道它是否有效 更新

                           <html >
            <head>
                <script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
            </head>
            <body>
            <input type="text" id="box" onkeydown="asd()" />
            <select name="asd" id="select_box">
            </select>
            
            <script>
               function asd() 
                   var data = "data":["id":50,"name":"Alec","id":51,"name":"Recep","id":52,"name":"Aecep"];
                   $("#box").on("keyup", function()
                       $('#select_box').empty();
                       var search_text = $("#box").val().toLowerCase();
                       data_value = data.data[0].name.substring(search_text.length).toLowerCase();
                       for (var i=0; i<data.data.length; i++) 
                           if(search_text === data.data[i].name.substring(0,search_text.length).toLowerCase())
                               $("#select_box").append(new Option(data.data[i].name, data.data[i].id));
                           
                       
            
                   );
               
            </script>
            
            </body>
            </html>

此代码正在运行。为您的项目正确更改变量

【讨论】:

评论不用于扩展讨论;这个对话是moved to chat。

以上是关于使用 select2 和 ajax laravel 资源进行多选的主要内容,如果未能解决你的问题,请参考以下文章

如何在 laravel 中使用 AJAX 数据时设置 Select2 的选定值?

Select2 Ajax Laravel - 结果未显示

Laravel 5.4 刀片和 select2 不工作

当 Ajax 响应来自使用 select2 的 laravel 控制器时,如何检查 JQuery 附加选项中的条件?

Select2 Ajax Laravel 5.2 - 分页结果不起作用?

Select2 ajax:在编辑模式下预选数据