Я использую select2 v4 с ajax заполненными данными. API фильтрует данные перед отправкой обратно, поскольку это очень большая база данных, и возвращает ошибку 404, если поисковый термин не найден в базе данных. Я хочу, чтобы мои пользователи могли по-прежнему создавать новый параметр поиска, если ajax возвращает значение 404. В настоящее время он позволяет им только добавлять новый параметр поиска, если поисковый термин найден в базе данных и отобразит ошибка «загрузка не удалась», если она не найдена. Мой текущий код:
$('input[name="Organization"]').select2({
placeholder: "placeholder",
allowClear: true,
minimumInputLength: 2,
ajax: {
url: 'myURL',
dataType: 'json',
quietMillis: 750,
transport: function(params) {
params.error = function(jqXHR) {
if (jqXHR.status == 404) {
console.log("404");
}
};
return $.ajax(params);
},
data: function (term) {
currentSearch = term;
return {
term: term
};
},
results: function (data) {
var results = [];
$.each(data, function (index, entity) {
if(entity.title.search(new RegExp(currentSearch, "i")) >= 0){
results.push({
id: entity.title,
text: entity.title
});
}
});
return {
results: results
};
}, //end results
}, // end ajax
createSearchChoice: function(term, data) {
if ($(data).filter(function() { return this.text.localeCompare(term)===0; }).length===0) {
return {
id:term,
text:term + " (new)"
};
}
}
}); // end select2
Как я могу позволить пользователю создать новый вариант поиска, если возвращается 404?