Select 2 dropdown unlimited scroll with jquery ajax

Select 2 dropdown unlimited scroll with jquery ajax

html code :-

<select  class="form-sm select2 js-example-data-ajax" id="searchUserSelect">
       <option value="">All users</option>

</select>

jquery code :-

<script>
    $(".js-example-data-ajax").select2({
        ajax: {
            url: '{{ route("search.usersDropdown") }}',
            dataType: 'json',
            delay: 250,
            data: function (params) {
            return {
                q: params.term, // search term
                page: params.page
            };
            },
            processResults: function (data, params) {
            // parse the results into the format expected by Select2
            // since we are using custom formatting functions we do not need to
            // alter the remote JSON data, except to indicate that infinite
            // scrolling can be used
            params.page = params.page || 1;

            return {
                results: data.items,
                pagination: {
                more: (params.page * 30) < data.total_count
                }
            };
            },
            //cache: true
        },
        placeholder: 'Search for a repository',
        minimumInputLength: 1,
        templateResult: formatRepo,
        templateSelection: formatRepoSelection
        });
    });

    function formatRepo (repo) {
        if (repo.loading) {
            return repo.text;
        }

        var $container = $(
            "<div class='select2-result-repository clearfix'>" +
            "<div class='select2-result-repository__meta'>" +
                "<div class='select2-result-repository__title'></div>" +
                "<div class='select2-result-repository__description'></div>" +
                "</div>" +
            "</div>" +
            "</div>"
        );

        $container.find(".select2-result-repository__title").text(repo.firstname);
        $container.find(".select2-result-repository__description").text(repo.lastname);
        console.log($container);
        return $container;
    }

    function formatRepoSelection (repo) {
    return repo.full_name || repo.text;
    }
</script>


response should be :-

{
    "total_count": 15347496,
    "incomplete_results": true,
    "items": [
        {
            "id": 1,
            "firstname": "jake",
            "lastname": "wright,
        },
        {
            "id": 2,
            "firstname": "Avinash",
            "lastname": "vyas",
        }
    ]
}

0 Comments

Leave a Reply

You must be logged in to post a comment.