Select2 загрузить данные из локального файла JSON

1

У меня есть select2, настроенный и работающий с использованием переменной JS для загрузки данных, однако из-за того, что у моих данных много вариантов (стран), я бы хотел их загрузить с помощью, а не в моем JS.

Я создал файл countries.json со всеми странами в нем, и я использую приведенный ниже код, чтобы попытаться втянуть их. Однако я получаю ошибку The results could not be loaded.

Код:

$('#allowedCountries').select2({
    placeholder: 'Select allowed countries',
    selectOnClose: false,
    tags: false,
    tokenSeparators: [',', ' '],
    ajax: {
        dataType : "json",
        url      : "includes/countries.json",
        processResults: function (data) {
            return {
                results: $.map(data, function(obj) {
                    return { id: obj.ime, text: obj.ime };
                })
            };
        }
    },
});

countries.json

[{id:1, text: 'Afghanistan'},
{id:2, text: 'Aland Islands'},
{id:3, text: 'Albania'},

...

{id:245, text: 'Yemen'},
{id:246, text: 'Zambia'},
{id:247, text: 'Zimbabwe'}]
  • 0
    Вам не нужно повторно обрабатывать результат вашей страны, выберите 2 id ожидания и текст. То же, что ваш файл JSON. Если вам все равно придется это сделать, return { id: obj.id, text: obj.text };
  • 0
    @Camille У меня нет особой необходимости в этом, это единственный пример кода, который я могу найти для своих целей :( Я не знаком с javascript или jquery, поэтому я совершенно заблудился. Я могу это исправить, сохранив Данные в Javascript Var, но на самом деле должны быть сделаны с помощью файла JSON.
Показать ещё 2 комментария
Теги:
jquery-select2

1 ответ

1
Лучший ответ

Нашел решение с помощью @Camille.

  1. Ненужная переработка json файла (требуется только в том случае, если ваш json файл использует разные идентификаторы, чем "id" и "text"

  2. Файл json был в неправильном формате, см. Https://select2.org/data-sources/formats

Код:

// Create countries dropdown
$('#allowedCountries').select2({
    placeholder: 'Select allowed countries',
    selectOnClose: false,
    tags: false,
    tokenSeparators: [',', ' '],
    ajax: {
        dataType : "json",
        url      : "includes/countries.json",
    },
});

countries.json

{
    "results": [
    {
        "id": 1,
        "text": "Afghanistan"
    },
    {
        "id": 2,
        "text": "Aland Islands"
    },
    {
        "id": 3,
        "text": "Albania"
    },

...

    {
        "id": 245,
        "text": "Yemen"
    },
    {
        "id": 246,
        "text": "Zambia"
    },
    {
        "id": 247,
        "text": "Zimbabwe"
    }
    ]
}
  • 0
    Приятно! Отличная работа :-)

Ещё вопросы

Сообщество Overcoder
Наверх
Меню