2012-07-11 94 views
0

我在js中自动完成了一个问题。在这里,下面的代码工作很适合我:自动完成功能无效

$(function(){ 
    $("#txtAuto").autocomplete({ 
     source: ["Choice1","Choice2"], 
     minLength:2  
    }); 
}); 

但是,当我将其更改为下面的代码来测试它并没有给我选择:

$(function(){ 
    $("#txtAuto").autocomplete({ 
     source: function(request, response){ 
      $.ajax({ 
       url: "test.ewd", 
       success: function(data){ 
        var res=data.match('\\[[^\\]]*]'); 
        return ["Choice1", "Choice2"];      
       } 
      }); 
     }, 
     minLength:2  
    }); 
}); 

任何一个可以告诉我在哪里,我没有错?

回答

0

问题的核心是ajax函数是异步的。它不会与其他代码同时执行,而是可以在您的ajax请求(可能需要10-100 ms完成)的响应时执行。

所以,你不能return的值从success功能。相反,您必须将它们传递给response函数。像这样:

success: function(data) { 
    var res=data.match('\\[[^\\]]*]'); 
    response(["Choice1", "Choice2"]); 
} 
+0

感谢jakob其为我工作 – Karthikeyan 2012-07-11 09:48:59

+0

没问题。我的答案旁边有一个按钮,可以用来“接受”答案。它会向其他人展示这是工作解决方案。 – Jakob 2012-07-11 11:36:12