我想为我的搜索框实现一个基于ajax的自动完成功能,我碰到了,implementing autocomplete in my website。从MYSQL表AJAX自动完成查询
现在我想知道的是,我附加一个数据源到控件,但到目前为止,我已经看到数据源需要一个文本库模式,我不喜欢它的查询,它控制调用查询并且它返回控件的过滤器必须应用的记录。
希望我的问题是清楚的
我想为我的搜索框实现一个基于ajax的自动完成功能,我碰到了,implementing autocomplete in my website。从MYSQL表AJAX自动完成查询
现在我想知道的是,我附加一个数据源到控件,但到目前为止,我已经看到数据源需要一个文本库模式,我不喜欢它的查询,它控制调用查询并且它返回控件的过滤器必须应用的记录。
希望我的问题是清楚的
你怎么认为你可以将其链接到客户端的查询? 您可以将其链接到服务器的AJAX调用,该服务器返回选项列表。 控件的过滤器将在该选项列表上执行其他过滤。
最好的做法是,火的AJAX 在页面加载,到服务器的功能,这将查询到数据库(MySQL的你的情况),并在JSON格式获取选项列表。将选项列表分配为自动完成的输入。 (它显然比每次用户开始在搜索框中输入ajax-request都好。)
如果你使用jquery,它可以是这样的。
$(function(){ //runs on page load
$.ajax({
type: "POST",
url: "/searchlist/", //server function that returns the search list
data: '',
dataType: "json",
success: function(json){
search_choices = json.list; // search option list
$("input#searchbox").autocomplete(search_choices, {
max: 4,
scroll: false,
autoFill: true,
multiple: true,
matchContains: true,
multipleSeparator: " ",
width: 180
});
}
});
});
我可以提供你在图书馆以外的例子,但jquery,但我希望这可以让你找到自己的方式。
编辑:不,您的数据库不需要排序的选择。这是你的服务器功能,应该做所有的排序。使用,
autocomplete(url_to_server_function, options)
并且您的服务器功能将获取搜索词(搜索框中的关键字用户类型),作为获取请求。在那里过滤数据库,这是您可以将相关单词与结果挂钩的地方。只需列出您希望显示为建议的所有内容,然后以序列化json格式返回,并让自动完成负责匹配和排序数据。
我喜欢你的想法,我只做类似的事情。不过,我现在有一个新的疑问。我的数据库是否必须以我希望显示的方式包含数据?我的意思是,当我输入“com”时,它会查询我的数据库中所有以“com”开头的关键字,并将它们显示为电脑,隔间等。但是,如果我希望它更复杂并将其与相关单词相结合,就像谷歌的建议,所以“com”可能意味着“来这里”,“电脑课程”等。雅虎YUI Widget或任何其他提供的功能呢? – 2009-07-14 09:49:47