上下文:我正在尝试使用从服务器发送的数据来设置JQuery自动完成。当用户更改某个字段时,自动填充数据将从后端发送,以便他们可以根据需要选择提供的值。后端代码非常实用,因为我可以看到自动完成数据数组,如果它在前端我console.log(data)
。
我的问题是,即使前端代码有效地请求和接收自动完成数据,当我使用JQuery的内置自动完成选项时,它从不在前端显示选项。
这是我的代码:
$.ajax({
type: "GET",
url:"/autocomplete/"+event.target.id+"/"+$(this).val(),
success : function(data){
console.log(data);
$(event.target.id).autocomplete({
source: data
});
}
});
event.target.id
是我要自动填充的输入字段的ID。同样,所有这一切都很好。当我console.log(data)
时,它显示了我想用于自动完成的项目数组,但是当我实际运行时
$(event.target.id).autocomplete({source:data});
它没有在前端显示任何自动填充选项。
我是怎么解决这个问题的?我已经停用了我的广告拦截器并在一堆不同的浏览器中尝试过,结果从未显示为标准的下拉列表自动完成。
答案 0 :(得分:0)
使用@Jaromanda X建议的策略,我发现event.target.id
字段返回了我打算自动填充的字段的名称,但它没有包含" #"必须通过JQuery表示id。功能代码现在看起来像这样:
$.ajax({
type: "GET",
url:"/autocomplete/"+event.target.id+"/"+$(this).val(),
success : function(data){
console.log(data);
$("#"+event.target.id).autocomplete({
source: data
});
}
});
是的,它感觉有点hacky,但运行的代码实际上是运行的代码。