1

我想知道如何才能使这个工作?我已经阅读了演示文件,但我很好奇是否有办法让它像这样工作。我有一个类似这样的 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/是来源。

4

3 回答 3

2

当您提供您的 url 'test.php' 作为自动完成的来源时,您的页面必须计算通过提供的 'term' 请求参数完成的名称。

文档中

使用字符串时,自动完成插件期望该字符串指向将返回 JSON 数据的 URL 资源。它可以在同一台主机上,也可以在不同的主机上(必须提供 JSONP)。自动完成插件不会过滤结果,而是将请求参数“term”添加到 URL,服务器端脚本应该使用它来过滤结果。数据本身可以采用与上述本地数据相同的格式。

这意味着您必须term在 SQL 查询中使用 request 参数来过滤结果,例如

$query = "SELECT DISTINCT City FROM Locations where City like '".$term."%' ORDER BY City";
于 2012-06-27T06:21:47.933 回答
1

文档说您应该设置一个选项,remoteDataType其值是json您的后端是否返回 JSON 数组:

远程数据类型(默认值:false)

如果将其设置为“json”,则自动完成程序需要来自服务器的 JSON 数组。任何其他设置,它默认为使用 lineSeparator 和 Cellseparator 的本机文本格式(见下文)。

例如

$('.searchbox').autocomplete('test.php', {
  minChars: 3,
  remoteDataType: 'json'
});

此外,您的服务器端查询应使用q自动完成程序发送的参数,GET仅返回与输入内容匹配的结果。

于 2012-06-27T06:15:09.950 回答
0

将您的输入文本作为 GET 变量发送到您的 test.php 文件,并使用该变量将过滤器应用于您的查询。

于 2012-06-27T06:10:11.543 回答