Jquery从json自动完成列出所有元素

Jquery从json自动完成列出所有元素,jquery,json,ajax,jquery-ui,jquery-ui-autocomplete,Jquery,Json,Ajax,Jquery Ui,Jquery Ui Autocomplete,在自动完成脚本中,我设置了一个json文件: 脚本 <script type="text/javascript"> $("#tags").autocomplete({ source: function(request, response) { $.ajax({ url: "test.json", dataType: "json", data: { term: request.term }, suc

在自动完成脚本中,我设置了一个json文件:

脚本

<script type="text/javascript">
  $("#tags").autocomplete({
    source: function(request, response) {
      $.ajax({
        url: "test.json",
        dataType: "json",
        data: { term: request.term },
        success: function(data) {
          response($.map(data, function(item) {
            return { label: item.name_test };
          }));
        }
      });
    }
  });
</script>
但当我在输入中键入一个名称时,所有元素都会列出


我的错误是什么

当您使用远程源代码时,您必须在服务器端或ajax调用的
success
回调中过滤结果。在您的情况下,您可以使用以下内容:

...
success: function (data) {
    var tag_val = $("#tags").val();
    response($.map(data, function (item) {

        //filtering results....
        if (item.name_test.indexOf(tag_val) != -1) {
            return {
                label: item.name_test
            };
        }
    }));
}

您是否在服务器上筛选结果?因为你应该是。不是过滤,我知道这是自动完成的目标,列出具有相同单词或名称的元素similar@Samueledrei不客气。只是指出这不是最好的方法,因为您总是得到整个json来过滤一些结果。最好是在服务器端进行过滤或不使用远程源
[{
  "id_test": "7",
  "name_test": "Tejido",
  "price": "65"
}, {
  "id_test": "8",
  "name_test": "Semen",
  "price": "120"
}, {
  "id_test": "6",
  "name_test": "Saliva",
  "price": "20"
}, {
  "id_test": "2",
  "name_test": "Analisis urinario",
  "price": "150"
}, {
  "id_test": "3",
  "name_test": "Analisis sanguineo",
  "price": "1502"
}, {
  "id_test": "4",
  "name_test": "Analisis fecal",
  "price": "20"
}]
...
success: function (data) {
    var tag_val = $("#tags").val();
    response($.map(data, function (item) {

        //filtering results....
        if (item.name_test.indexOf(tag_val) != -1) {
            return {
                label: item.name_test
            };
        }
    }));
}