无论我在文本框中键入什么内容,始终显示整个列表。继承我的代码:
$("#tb_country").autocomplete({
source: function(request, response) {
$.ajax({
url: "/index.php/ajax_calls/select_countries",
dataType: "json",
data: request,
success: function(data) {
response(data);
}
});
},
minLength: 3
});
select_countries 函数以正确的格式返回自动完成的JSON数据,即 [{“label”:“United States”},{“label”:“Canada”} ... ..... 的 请有人告诉我这是错的,比如
答案 0 :(得分:5)
确保您实际过滤了服务器端代码中的响应,如here所述:
自动完成插件不会过滤结果,而是过滤查询 string添加了一个术语字段,服务器端脚本应该 用于过滤结果。例如,如果源选项是 设置为“http://example.com”,用户输入foo,即GET请求 将被http://example.com?term=foo。
您确实发送了正确的请求(term
param填充了input
元素的当前值),但很可能不会在服务器代码中使用它。
答案 1 :(得分:0)
问题可能是响应不在上下文中?
您可以尝试从服务器获取数据的onchange而不是使用响应(数据),而不是像这样设置源:
$("#tb_country").autocomplete( "option", "source", serverData );
此外,我不知道问题是否来自服务器或jquery的返回数据。如果问题是来自服务器的数据,则应确保请求中发送的内容。
编辑:必须是服务器问题,因为数据已经填充一次。 请您发布请求标题和/或服务器功能吗?