Я хочу создать поле ввода jquery Auto Complete для города, в котором находится пользователь. Когда пользователь начинает вводить слова, я хочу отобразить список из 5 городов с ближайшими ассоциациями в этом формате [Город, Страна]
у меня есть три стола
- Страна (id, название страны)
- Регион (id, имя_региона, идентификатор страны)
- Город (id, название города, region_id, country_id)
когда пользователь выбирает город, я хочу записать идентификатор города, чтобы вставить его в базу данных.
Как мне сделать это с автозаполнением?
Должен ли я установить скрытое поле с идентификатором города или передать название города, а затем проверить, какой его идентификатор делает выбор? Проблема здесь в том, что по всему миру есть города с одинаковым названием, и он будет различаться, чтобы идентифицировать его.
JS код
$("#UserCity").autocomplete({
source: function (request, response) {
$.ajax({
url: "http://localhost/baku/users/location/",
dataType: "json",
data: {
data: request.term
},
success: function (data) {
/// Need to modify this part
response($.map(data.geonames, function (item) {
return {
label: item.name + (item.adminName1 ? ", " + item.adminName1 : "") + ", " + item.countryName,
value: item.name
}
}));
}
});
},
minLength: 2
});
Пример строки JSON, которую я получаю из Ajax
[{"name":"Banaras, Uttar Pradesh, India","city_id":"1927","region_id":"2193","country_id":"113"},{"name":"Banda, Uttar Pradesh, India","city_id":"1938","region_id":"2193","country_id":"113"},{"name":"Bangalore, Karnataka, India","city_id":"1949","region_id":"2185","country_id":"113"},{"name":"Banganapalle, Andhra Pradesh, India","city_id":"1950","region_id":"2169","country_id":"113"},{"name":"Banswara, Rajasthan, India","city_id":"1983","region_id":"2190","country_id":"113"},{"name":"Banur, Punjab, India","city_id":"1987","region_id":"2189","country_id":"113"}]
Я хочу отобразить имя в виде списка и взять City_id в качестве передаваемого параметра через форму, чтобы мне больше не нужно было выполнять запрос к базе данных.
Массив
Array
(
[0] => Array
(
[name] => Banaras, Uttar Pradesh, India
[city_id] => 1927
[region_id] => 2193
[country_id] => 113
)
[1] => Array
(
[name] => Banda, Uttar Pradesh, India
[city_id] => 1938
[region_id] => 2193
[country_id] => 113
)
[2] => Array
(
[name] => Bangalore, Karnataka, India
[city_id] => 1949
[region_id] => 2185
[country_id] => 113
)
[3] => Array
(
[name] => Banganapalle, Andhra Pradesh, India
[city_id] => 1950
[region_id] => 2169
[country_id] => 113
)
[4] => Array
(
[name] => Banswara, Rajasthan, India
[city_id] => 1983
[region_id] => 2190
[country_id] => 113
)
[5] => Array
(
[name] => Banur, Punjab, India
[city_id] => 1987
[region_id] => 2189
[country_id] => 113
)
)