为什么我不能在我的ajax方法之后调用我的jquery自动完成

时间:2014-10-17 23:02:32

标签: php jquery ajax autocomplete

我正在尝试为我的搜索创建一个建议下拉菜单(类似于谷歌的#)。我想做一个ajax调用,它会调用一些php并返回一个数组,这将是建议。到目前为止,这是我的代码:

*注意:我还没有实现我的PhP,所以我只是假装我的ajax成功并返回了一个名为availableTags的数组:

$(function(){

    var timer;
    var availableTags;

    var getSuggestions = function() {

        $.ajax(
            {
                url: 'http://localhost/test.php',
                type: 'GET',
                success: function(output) 
                {
                    alert('Success from ajax! ' + output);
                    availableTags = [ "Hello", "Hey"];
                }
            }
        ).done(function(data) {
            $( "#f" ).autocomplete({
                source: availableTags
            });
        });
    }

    $('#f').keyup(function() {
        clearTimeout(timer);
        timer = setTimeout(getSuggestions, 300);

    });

}); 

我的问题是即使我使用.done加载自动填充功能,它也不会显示建议下拉菜单。我知道我的ajax功能正常工作,因为我已经在其他地方使用过它。还有其他方法我应该调用自动完成功能吗?

所以为了进一步澄清 - 我正在寻找一种在我的ajax之后手动加载自动完成的方法。这可能吗?

1 个答案:

答案 0 :(得分:1)

我认为,这就是你想要的(example):

$('#f').autocomplete({
    delay: 300,
    source: function(request, response) {
        $.get('http://localhost/test.php', {
            q: request.term
        }).success(function(availableTags) {
            response(availableTags);
        });
    }
});