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     
    });
});

有人告诉我我在哪里做错了吗?

4

1 回答 1

0

问题的核心是ajax-function是异步的。它不会与您的其余代码同时执行,而是在您的 ajax 请求的响应(可能需要 10-100 毫秒才能完成)可用时执行。

因此,您不能returnsuccess-function 中获取值。相反,您必须将它们传递给response函数。像这样:

success: function(data) {
  var res=data.match('\\[[^\\]]*]');
  response(["Choice1", "Choice2"]);
}
于 2012-07-11T07:45:11.347 回答