#php #jquery #json #jquery_ui
Есть такая формочка заказ билетов, где нужно указать откуда летишь и куда:
$('.js-autocomplete').on('focus', function(){
window.autocomplite_items = false
$(this).autocomplete({
source:'https://ufsa.com.ua/ufsa/autocomplete.php',
minLength: 2,
autoFocus : true,
select: function( event, ui ) {
console.log('select');
window.autocomplite_items = true
$(this).next().val(ui.item.id);
},
close: function(event, ui) {
if(!window.autocomplite_items && this.value.length >= 2) {
var alias = this
$.get('https://ufsa.com.ua/ufsa/autocomplete.php?b&term=' + this.value
, {} , function(tpl) {
try {
var obj = eval('(' + tpl + ')');
$(alias).next().val(obj[0].id)
} catch(e) {
console.debug(e)
}
})
}
}
});
});
Использую jquery ui autocomplete и json файл с др. сайта.
Задача, при фокусе на поле должны высвечиваться варианты аэропортов - город + код
аэропорта (например как тут - *не реклама, исключительно как пример).
Вопрос: Как реализовать автокомплит городов с аэропортами, возможно, есть международными
и общедоступный jsonp файл с подобными данными? Что для php нужно?
И как реализовать несовпадение откуда и куда (при вводе города откуда, чтобы в куда
уже он не высвечивался)?
P.S: И если в дальнейшем планируется интеграция в Wordpress, возможно, есть готовые
плагины\виджеты для реализации подобного?
Ответы
Ответ 1
возможно, есть международными и общедоступный jsonp файл с подобными данными? Есть сервисы, которые предоставляют API поиска по аэропортам (например, https://developer.flightstats.com/api-docs/airports/v1), но по очевидным причинам, они платные и при определённой нагрузке это может стать не выгодно. Беглый поиск по GitHub выдаёт два репозитория с аэропортами, самый популярный обновлялся в 2015 году, другой — совсем недавно, хоть и создан в 2014, что добавляет трастовости: https://github.com/mwgg/Airports Данные можно получать скриптом (самое простое — git pull-ить репозиторий), а затем конвертировать результаты в какую-либо бд для более быстрого поиска. Задача, при фокусе на поле должны высвечиваться варианты аэропортов - город + код аэропорта (например как тут - *не реклама, исключительно как пример). В вашем примере данные начинают возвращаться только при вводе двух символов, просто выпадайка с аэропортами будет изначально добавляться к весу страницы (например, json в репозитории, который я привёл выше, весит 8.9 мегабайт) Что для php нужно? PHP пригодится для того, чтобы не возвращать во фронтенд список всех аэропортов, а получать только те, которые удовлетворяют поисковому запросу. Сама реализация сильно зависит от нагрузки и инструментов (например, фреймворка), которые вы выберете. В целом, это же справедливо для инструментов на фронтенде, т. к., например, jquery ui тянет за собой много зависимостей (js, css), которые могут оказаться лишними. И как реализовать несовпадение откуда и куда (при вводе города откуда, чтобы в куда уже он не высвечивался)? Для этого достаточно при отправке запроса из второго select на бекенд передавать код уже найденного в первом селекте аэропорта. При определённом допущении, код для получения списка аэропортов может быть одинаковым и в него будут передаваться текущие значения обоих select. Я постарался ответить на ваши вопросы, но в целом, вопросы довольно комплексные и ответ может перейти в дискуссию о поставщике данных, сохранении результатов, кешировании выборе компонентов и технологий для фронтенда и бэкенда. Если потребуются какие-то уточнения — пишите, я обновлю ответ.
Комментариев нет:
Отправить комментарий