jquery自动完成结果显示为单个字母,而不是单词
问题描述:
我正在使用jquery在文本字段中捕获用户输入,然后显示可能选项的下拉列表。jquery自动完成结果显示为单个字母,而不是单词
该脚本调用一个php页面,该页面搜索并返回结果给ajax请求。
哪里有由PHP返回它们看起来像
["Site 4,"Site 2","Site 1","Site 6","Site 7","Site 0"]
的单个值会出现像
["Site 4"]
我在下降能得到什么下来如下(基于单多个值条目)
[
LINE
"
S
i
t
e
LINE
4
"
]
其中LINE是Site
之间的分隔符& 4
并显示引号和括号。
我jQuery是:
$('#site').autocomplete({
source: function(request, response) {
$.ajax({
url : 'siteCheck.php?name=' + request.term,
success: function(data) {
console.log (data)
response($.map(data, function(item) {
return {
label: item,
value: item,
data : item
}
}));
}
});
},
autoFocus: true,
minLength: 1,
select: function(event, ui) {
$('#site').val(ui);
}
});
我如何得到这个返回的下拉列表中为
Site 4
Site 2
Site 1
Site 6
Site 7
Site 0
,而不是单个字母!
感谢
答
首先:它是一个错字,你的JSON数组有第一个元素没有闭合"
?
第二:根据自动完成的文档,source
,只需将数组作为简单数组传递,就像您已经拥有它一样。无需将其转换为标签/值。
在remote datasource的例子,他们只是加入source: 'remoteScript.php'
所以你可以只使用
$('#site').autocomplete({
source: 'siteCheck.php?name=' + request.term,
autoFocus: true,
minLength: 1,
select: function(event, ui) {
$('#site').val(ui);
}
});
编辑:
尝试修改你的服务器端脚本来接受term
作为GET参数,那么您的网址可以删除该部分,并添加词语,因为自动完成功能可以为您提供:
source: 'siteCheck.php', //should accept term as parameter
感谢您的回复,是的,这是一个错字!我会试试这个,让你知道我是怎么做到的。 – Tom
完美无瑕,完全符合我的需求,谢谢:) – Tom