是否可以在Jquery自动完成中执行?

时间:2012-09-26 14:06:40

标签: javascript jquery ajax

我正在使用JQuery插件为我的项目开发一个“自动完成”功能,我需要将来自两个不同来源(数据库表)的建议(匹配结果)显示给用户,这意味着需要为两个请求发送ajax请求网址一次。

有可能吗?

如果我对此有任何建议,请高兴

3 个答案:

答案 0 :(得分:2)

使用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);
                     }
                });
         },
   }
}

答案 1 :(得分:1)

我为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 :(得分:0)

是的,这是可能的,但这是2个问题。使用Microsoft发明的原始ajax对象,您无法同时发出多个请求。有很多脚本可以实现这一点,但你是一个幸运的家伙,jQuery已经很幸运了。另一个问题是关于自动完成功能,可以通过trie数据结构解决。它可以有效地存储大型词典。

相关问题