2014-10-17 31 views
0

我试图在搜索上创建一个建议下拉菜单(类似于google的)。我想做一个ajax调用,这将调用一些PHP并返回一个数组,这将是建议。这里是我到目前为止的代码:为什么我不能在我的ajax方法后调用我的jquery自动完成功能

*注:我还没有实现我的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

为什么不创建它的成功,函数 – 2014-10-17 23:08:12

+0

我只想更换'.done()'和'.success()'并将'success'属性和'.done()'方法的逻辑合并到一个地方。 [像这个JSFiddle](http://jsfiddle.net/za3h9bbd/)。 – Sam 2014-10-17 23:09:07

+0

这就是我一开始就想到的。但我得到同样的问题。自动完成不显示。感谢您的回应 – 2014-10-17 23:10:30

回答

1

我想,这是你想要什么(example):

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