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 関数が非同期であることです。コードの残りの部分と同時に実行されるのではなく、ajax-request (完了するまでにおそらく 10 ~ 100 ミリ秒かかる) に対する応答が利用可能になったときに実行されます。

returnしたがって、関数から値を取得することはできませんsuccessresponse代わりに、それらを関数に渡す必要があります。このような:

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