Jquery自动完成功能无法在get ajax请求中工作

时间:2009-12-02 14:36:24

标签: javascript jquery ajax

我正在使用JQuery自动完成插件(http://docs.jquery.com/Plugins/Autocomplete)。我的页面中有一个输入字段。下面的代码可以使用。

<script>
$(document).ready(function(){
    somedata = "Core Selectors Attributes Traversing Manipulation CSS Events Exciting Electronic Effects     Ajax Utilities".split(" ");
$("#by").autocomplete(somedata);
</script>

现在,当by输入字段获得焦点时,我创建一个ajax get请求,该请求正确地获取由“\ n”分隔的一些字符串组成的数据,并且我想用接收到的数据填充by字段。但是从$ .get内调用自动完成功能不起作用,如下所示。有什么方法可以解决这个问题吗?

$(document).ready(function(){
    somedata = "Core Selectors Attributes Traversing Manipulation CSS Events Exciting Electronic Effects     Ajax Utilities".split(" ");
var url = "<some url here>";
$("#by").focus(function(){
$.get(url,function(result) {
 $("#by").autocomplete(somedata); //Does not work
 $("#by").autocomplete(result.split("\n")); //Does not work
});
});
});

谢谢。

1 个答案:

答案 0 :(得分:0)

焦点事件为时已晚,无法加载自动完成的值。从插件的描述:

  

通过提供自动完成的字段焦点   或进入它的东西,   插件开始搜索匹配   条目并显示值列表   从中选择。通过输入更多   字符,用户可以过滤掉   列表更好地匹配。

因此,当触发焦点事件时,自动完成功能可以完成工作。您正在尝试从同一事件加载数据。事实上,在调用事件之后加载数据,因为$ .get方法的回调是异步调用的。