У меня автозаполнение работает нормально, но я пытаюсь найти способ сделать это быстрее.Вот мой HTML:
Country: <select name='country' id='country' onchange="renewAutocomplete();">
<option value='US'>USA</option>
<option value='UK'>United Kingdom</option>
</select><br/>
City: <input type='text' name='city' id='city' />
<script>
function renewAutocomplete() {
$( "#city" ).autocomplete({
source: "searchCities/" + $('#country').val(),
minLength: 2
});
}
</script>
Запрос PHP / mySQL довольно прост:
$term = $_GET['term'];
$sql = "SELECT city FROM cities WHERE country_code = '{$country}' AND city LIKE '{$term}%'";
Конечно, это означает новый запрос для каждого нажатия клавиши.Это помогает немного добавить кеширование, но все же не так быстро, как мне кажется.
Вопрос 1 Моей первой мыслью было собрать ВСЕ города в одном БДзвонить, когда выбрана страна.Есть ли способ присвоить возвращаемый JSON всех городов страны переменной, которую может использовать автозаполнение?Мои первоначальные тесты просто выскакивали во все города, которые вы ввели:
$.get("searchCities/" + $('#country').val(), function(data) {
$( "#city" ).autocomplete({
source: data,
minLength: 2
});
});
PHP:
$sql = "SELECT city FROM cities WHERE country_code = '{$country}'";
Вопрос 2 Поскольку города и страны не сильно меняются (обычно), будет быстрееесть плоский файл со всеми значениями?
Или есть ли другой способ сделать более быстрое автозаполнение?
Спасибо.