如何使用Typehead.js的多个自动完成功能检索值?

时间:2019-06-22 05:01:23

标签: json typeahead.js

我想使用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个值。

0 个答案:

没有答案