Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/477.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 自动完成不';行不通_Javascript_Ajax_Jquery Ui_Autocomplete - Fatal编程技术网

Javascript 自动完成不';行不通

Javascript 自动完成不';行不通,javascript,ajax,jquery-ui,autocomplete,Javascript,Ajax,Jquery Ui,Autocomplete,我对js中的自动完成有一个问题。在这里,以下代码对我很有效: $(function(){ $( "#txtAuto" ).autocomplete({ source: ["Choice1","Choice2"], minLength:2 }); }); 但当我将其更改为下面的代码进行测试时,它不会给我选择: $(function(){ $( "#txtAuto" ).autocomplete({ source:

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

有人告诉我哪里出错了吗?

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

因此,您不能
返回
success
-函数中的值。相反,您必须将它们传递给
响应
函数。像这样:

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

没问题。我的答案旁边有一个按钮,你可以用它来“接受”答案。它将向其他人表明这是有效的解决办法。