【发布时间】:2011-08-14 19:29:47
【问题描述】:
我的自动完成功能运行良好,但我正在努力想办法让它更快。这是我的 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 由于城市和国家/地区变化不大(通常),因此只有一个包含所有值的平面文件会更快吗?
或者有没有其他方法可以更快地自动完成?
谢谢。
【问题讨论】:
标签: php mysql jquery-ui autocomplete