我想使用typehead.js进行具有多个结果的自动完成预测,但到目前为止,我仍停留在无法正确检索数据的部分。
我尝试了其他在互联网上发布的方法,但到目前为止还没有运气。
我叫这个dbb.php
define (DB_USER, "XXXXXX");
define (DB_PASSWORD, "XXXXXX");
define (DB_DATABASE, "XXXXX");
define (DB_HOST, "XXXXXX");
$mysqli = new mysqli(DB_HOST, DB_USER, DB_PASSWORD, DB_DATABASE);
$sql = "SELECT tags FROM wallpaper
WHERE tags LIKE '%".$_GET['query']."%'
LIMIT 10";
$result = $mysqli->query($sql);
$json = [];
while($row = $result->fetch_assoc()){
$json[] = $row['tags'];
}
echo json_encode($json);
在我的footer.php上
var split = function (val) {
return val.split(/\s*[,;]\s*/);
};
var extractLast = function (term) {
return split(term).pop();
};
$('.typeahead').typeahead({
source: function (query, process) {
return $.getJSON('dbb.php', { term: extractLast(query)}, process);
},
updater: function (item) {
var terms = split(this.query);
terms.pop();
terms.push(item);
terms.push("");
return terms.join(",");
},
matcher: function (item) {
return extractLast(this.query).length > 0;
},
highlighter: function (item) {
var query = extractLast(this.query).replace(/[\-\[\]{}
()*+?.,\\\^$|#\s]/g, '\\$&');
return item.replace(new RegExp('(' + query + ')', 'ig'), function
($1, match) {
return '<strong>' + match + '</strong>';
});
},
});
我可以选择多个用逗号分隔的值,但值似乎仅限于数据库中的前8个值。