我正在使用`jquery-ui-autocomplete`(实际上是附加到搜索框的`catcomplete`)。只要我使用静态定义的项目数组作为源,它就可以很好地工作。
出于性能原因,我不想让自动完成向PHP脚本发送Ajax请求,从而使%like%请求到MySQL。所以,我从数据库生成了一个JSON文件,其中包含可以匹配搜索的每个项目(大约20-30个项目,来自许多sql表)。我想在页面加载或用户开始在搜索框中输入时仅读取/解析文件一次。
我卡在这里了。我尝试将Ajax调用附加到`.catcomplete()`(下面的代码)。我还尝试过进行getJSON调用并在其success()方法中创建.catcomplete。两种方法都会默默失败。
我有点新于JS/jQuery方面的东西,我已经喜欢它了,但我有点迷失了。任何帮助/解决方案/指向有用文档的指针都将不胜感激。
非常感谢您!以下是HTML代码:(真的很简单)
出于性能原因,我不想让自动完成向PHP脚本发送Ajax请求,从而使%like%请求到MySQL。所以,我从数据库生成了一个JSON文件,其中包含可以匹配搜索的每个项目(大约20-30个项目,来自许多sql表)。我想在页面加载或用户开始在搜索框中输入时仅读取/解析文件一次。
我卡在这里了。我尝试将Ajax调用附加到`.catcomplete()`(下面的代码)。我还尝试过进行getJSON调用并在其success()方法中创建.catcomplete。两种方法都会默默失败。
我有点新于JS/jQuery方面的东西,我已经喜欢它了,但我有点迷失了。任何帮助/解决方案/指向有用文档的指针都将不胜感激。
非常感谢您!以下是HTML代码:(真的很简单)
<form id="searchform" method="get" role="search">
<input id="searchfield" />
<input type="submit" name="go" value="go!" />
</form>
这是我的JS代码:
$( "#searchfield" ).catcomplete({
delay: 0,
source: function( request, response ) {
$.ajax({
url: "/path/to/cache.json",
dataType: "json",
data: {term: request.term},
success: function(data) {
response($.map(data, function(item) {
return {
label: item.label,
category: item.category,
desc: item.desc
};
}));
}
});
},
minlength:0
});
示例JSON数据:
[
{ label: "lbl1", category: "cat1", desc: "desc1"},
{ label: "lbl2", category: "cat1", desc: "desc2"},
{ label: "lbl3", category: "cat1"}
]