Jquery从json自动完成列出所有元素
在自动完成脚本中,我设置了一个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
<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
};
}
}));
}