我正在使用jQuery-Autocomplete库作为输入字段,而不是针对我想要使用的建议serviceUrl
定位本地数据,它为脚本提供了带有文件列表的JSON文件。在图书馆作者提供的demo(第30-47行)中,我将lookup: countriesArray,
替换为serviceUrl: 'retrieve_foreign_countries.php',
。
<?php // retrieve_foreign_countries.php
include 'init_db.php';
include 'functions.php';
prepareForeignCountriesJson($db);
?>
将prepareForeignCountriesJson()
定义为
function prepareForeignCountriesJson($db) {
$sql = 'SELECT country_code AS code, country_name AS value FROM foreign_country ORDER BY value;';
$stmt = $db->prepare($sql);
$stmt->execute();
$result = $stmt->fetchAll(PDO::FETCH_ASSOC);
echo "{\"query\": \"Unit\", \"suggestions\": ".json_encode($result)."}";
}
输入某些文本时的查找工作正常但不会根据输入文本过滤结果,而是提供整个国家/地区列表。换句话说,该功能(在demo第34-37行)
lookupFilter: function(suggestion, originalQuery, queryLowerCase) {
var re = new RegExp('\\b' + $.Autocomplete.utils.escapeRegExChars(queryLowerCase), 'gi');
return re.test(suggestion.value);
},
如图书馆作者(here)所解释的那样,没有启动
使用serviceUrl选项时,过滤器负责服务器 结果
然后,我在哪里开始使用serviceUrl
获取与加载本地数据相同的结果?我是否需要过滤prepareForeignCountriesJson()
中的查找数据?但是prepareForeignCountriesJson()
被称为多少次?每次用户在字段中输入某个字符?
答案 0 :(得分:0)
也许您的SELECT缺少WHERE子句:
$sql = "SELECT ... WHERE country_name LIKE CONCAT('$prefix', '%') ORDER BY ...";
(请注意,我更改为双引号,因此我可以&#39;插入&#39; $前缀。)