使用json数组的jquery-autocomplete

时间:2012-06-27 06:07:36

标签: php javascript jquery-autocomplete

我想知道我怎么能让这个工作?我已经阅读了演示文件,但我很好奇是否有办法让它像这样工作。我有一个像这样的

的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/是来源。

3 个答案:

答案 0 :(得分:2)

当您提供您的网址'test.php'作为自动填充的来源时,您的网页必须按照提供的'term'请求参数计算完成的名称。

来自the documentation

  

使用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文件,并使用该变量将过滤器应用于您的查询。