Javascript jQuery自动完成json源代码-不自动完成,只显示完整列表

Javascript jQuery自动完成json源代码-不自动完成,只显示完整列表,javascript,jquery,json,user-interface,autocomplete,Javascript,Jquery,Json,User Interface,Autocomplete,我使用jQueryUI的自动完成功能 $("#search").autocomplete({ minLength: 0, source: 'source.php', select: function( event, ui ) { $("#search").val(ui.item.label); return false; }, focus: function(event, ui) { $("#search").val(ui.item.label); return

我使用jQueryUI的自动完成功能

$("#search").autocomplete({
minLength: 0,
source: 'source.php',
select: function( event, ui ) {
    $("#search").val(ui.item.label);
    return false;
},
focus: function(event, ui) {
    $("#search").val(ui.item.label);
    return false;
}
}))

我在source.php中插入多个元素并返回json编码的元素

$search[] = array(
   'value' => $id,
   'label' => $name
);
echo json_encode($search);
当我开始在autocomplete字段中键入时,会显示一个包含source.php元素的列表。但不幸的是,他们都是。根据我在字段中输入的内容,它们不会被过滤

当我使用json时,是否需要设置任何特殊选项

编辑:多亏了T.J.Crowder,我想出了这个解决方案,让jQuery完成这项工作;)


从文档中看不明显,但是当您提供任何涉及运行代码(服务器端或客户端)的
source
时,jqueryui自动完成程序希望您过滤结果。对于服务器端代码,您将使用它传递给PHP文件的
术语
参数。发件人:

使用字符串时,Autocomplete插件希望该字符串指向将返回JSON数据的URL资源。它可以在同一台主机上,也可以在不同的主机上(必须提供JSONP)。请求参数“term”被添加到该URL中。数据本身可以采用与上述本地数据相同的格式

(如果他们真的提到了过滤,那就太好了;我建议他们这样做。更新:他们花了不到三个小时的时间更新文档并解决问题;新文档将在某个时候推送,至少在v1.9版之前。很好!)

autocompleter允许您以三种方式提供源:

  • 静态源数组:在这种情况下,自动完成程序进行过滤

  • 服务器端调用:在这种情况下,它传递一个
    术语
    参数,您需要使用它进行筛选

  • 客户端调用:在这种情况下,它将
    请求
    对象传递给具有
    术语
    属性的客户端代码;你应该用它来过滤


谢谢,就这样。我读的正是这句话,但正如你所说,他们没有提到“自己过滤”部分:)
$.getJSON('source.php', function(search) {
    $("#search").autocomplete({
    minLength: 0,
    source: search,
    select: function( event, ui ) {
       $("#search").val(ui.item.label);
       return false;
    },
    focus: function(event, ui) {
        $("#search").val(ui.item.label);
        return false;
    }
});