У меня есть 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'}]
Нашел решение с помощью @Camille.
Ненужная переработка json файла (требуется только в том случае, если ваш json файл использует разные идентификаторы, чем "id"
и "text"
Файл 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"
}
]
}
return { id: obj.id, text: obj.text };