我正在使用 JQuery 插件为我的项目开发“自动完成”功能,我需要从两个不同的来源(数据库表)向用户显示建议(匹配的结果),这意味着需要为两个 url 发送 ajax 请求时间。
有可能吗?
如果我对此有任何建议,我会很高兴
我正在使用 JQuery 插件为我的项目开发“自动完成”功能,我需要从两个不同的来源(数据库表)向用户显示建议(匹配的结果),这意味着需要为两个 url 发送 ajax 请求时间。
有可能吗?
如果我对此有任何建议,我会很高兴
使用 javascript 函数作为自动完成的源。您可以在内部执行两个 ajax 请求并将响应合并为一个。
$('#myinput').autocomplete({
source: function(data, callback) {
$.ajax(firstUrl, {
...,
success: function(result1) {
$.ajax(secondUrl, {
success: function(result2) {
var mergedResults = result1.concat(result2);
callback(mergedResults);
}
});
},
}
}
我为jsdocu.com写了一些东西。但这只是搜索的一个来源。但是,根据您的需要更改它并不难。
/** delayR by Yannick Albert | https://gist.github.com/3729753 **/
var delayR = function(a,b,c,d){c=null;return function(){d=this;clearTimeout(c);c=setTimeout(function(){a.apply(d,arguments)},b)}};
$("#s").bind('click keyup', delayR(function() {
var term = this.value,
url = $('#searchform').attr('action');
if (term) {
$.post(url, {
s: term
}, function(data) {
var content = $(data).find('.hentry');
if (content.length !== 0) {
$("#autocomplete").fadeIn().empty().append(content);
} else {
$("#autocomplete").hide();
}
});
} else {
$("#autocomplete").fadeOut();
}
}, 300));
是的,这是可能的,但这是 2 个问题。使用 Microsoft 发明的原始 ajax 对象,您不能同时发出多个请求。有很多脚本可以让这成为可能,但你是一个幸运的人,jQuery 已经拥有一个。另一个问题是关于自动完成功能,可以用 trie 数据结构解决。它在存储大型词典方面非常有效。