我想知道我怎么能让这个工作?我已经阅读了演示文件,但我很好奇是否有办法让它像这样工作。我有一个像这样的
的php文件$query = "SELECT DISTINCT City FROM Locations ORDER BY City";
foreach($DBH->query($query) as $row)
{
$array[] = $row['City'];
}
echo json_encode($array);
和一些js
$('.searchbox').autocomplete('test.php', {minChars: 3,});
当我测试它时,我输入三个字母,而不是建议,我得到整个json数组。我知道这个jquery-autocomplete可以使用本地数据,但我只是不知道如何。顺便说一下,https://github.com/dyve/jquery-autocomplete/是来源。
答案 0 :(得分:2)
当您提供您的网址'test.php'作为自动填充的来源时,您的网页必须按照提供的'term'请求参数计算完成的名称。
使用String时,Autocomplete插件需要该字符串 指向将返回JSON数据的URL资源。它可以在 相同的主机或不同的主机(必须提供JSONP)。自动填充 插件不会过滤结果,而是过滤请求参数 “term”被添加到URL,服务器端脚本应该使用该URL 用于过滤结果。数据本身可以采用相同的格式 作为上述本地数据。
这意味着您必须在SQL查询中使用term
请求参数来过滤结果,例如
$query = "SELECT DISTINCT City FROM Locations where City like '".$term."%' ORDER BY City";
答案 1 :(得分:1)
docs如果后端返回JSON数组,则应设置remoteDataType
选项,其值为json
:
remoteDataType(默认值:false)
如果将其设置为' json',则自动完成程序需要来自服务器的JSON数组。任何其他 设置,默认使用lineSeparator和Cellseparator的原生文本格式(见下文)。
E.g。
$('.searchbox').autocomplete('test.php', {
minChars: 3,
remoteDataType: 'json'
});
此外,您的服务器端查询应使用自动填充程序在q
中发送的GET
参数,以仅返回与输入内容匹配的结果。
答案 2 :(得分:0)
将您的输入文本作为GET变量发送到test.php文件,并使用该变量将过滤器应用于您的查询。