select2 ajax не работает

Я работаю с библиотекой select2, чтобы сделать раскрывающийся список с помощью ajax. Я не могу заставить его работать. Вот мой код:

$("#guests").select2({
        multiple: true,
        minimumInputLength: 1,
        formatInputTooShort: function () {
            return "Enter 1 Character";
        },
        data: function() {
            return data;
        },
        ajax: {
            url: 'some url',
            dataType: 'json',
            processResults: function (data) {
                // 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

                return {
                    results: data.data,
                    pagination: {
                        more: 30
                    }
                }
            }
            /*,
            cache: true*/
        },
        escapeMarkup: function (markup) { return markup; },
        templateResult: formatRepo,
        templateSelection: formatRepoSelection
    })

    function formatRepo (results) {

        var markup = "<div class='select2-result-resultssitory clearfix'>" +
                "<div class='select2-result-resultssitory__avatar'><img src='" + results.id + "' /></div>" +
                "<div class='select2-result-resultssitory__meta'>" +
                "<div class='select2-result-resultssitory__title'>" + results.text + "</div>";

        if (results.description) {
            markup += "<div class='select2-result-resultssitory__description'>" + results.guest_first_name + "</div>";
        }

        markup += "<div class='select2-result-resultssitory__statistics'>" +
                "<div class='select2-result-resultssitory__forks'><i class='fa fa-flash'></i> " + results.guest_last_name + " Forks</div>" +
                "<div class='select2-result-resultssitory__stargazers'><i class='fa fa-star'></i> " + results.guest_do_b + " Stars</div>" +
                "<div class='select2-result-resultssitory__watchers'><i class='fa fa-eye'></i> " + results.text + " Watchers</div>" +
                "</div>" +
                "</div></div>";

        return markup;
    }

    function formatRepoSelection(results) {
        return results.text || results.guest_first_name;
    }

html:

<select id="guests" class="form-control input-guests " data-placeholder="Search guest..." multiple=""></select>

вот данные JOSN, которые я получаю с удаленного URL:

[{
    "id": 1,
    "guest_first_name": "Jon",
    "guest_last_name": "Doe",
    "guest_do_b": "1954-07-13T00:00:00+0100",
    "text": "Jon Doe"
}, {
    "id": 2,
    "guest_first_name": "Janne",
    "guest_last_name": "Doe",
    "guest_do_b": "1960-01-14T00:00:00+0100",
    "text": "Janne Doe"
}]

person Lord Zed    schedule 18.11.2015    source источник
comment
Попробуй это. Это может помочь: jsfiddle.net/marcrazyness/XMAq2/light   -  person DinoMyte    schedule 19.11.2015
comment
Не могли бы вы предложить решение для select2 4.0, поскольку это то, что я использую прямо сейчас?   -  person Lord Zed    schedule 19.11.2015


Ответы (1)


Немного поздно, но была ли ваша ошибка в том, что options.results не определено?

В этом случае вы можете переименовать функцию processResults в results.

Я знаю, что это в документации с функцией processResults, но у меня была такая же проблема и в этой статье было решение для меня.

person lehnerchristian    schedule 20.03.2016