2012-07-11 93 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