4

本地包含javascript常用術語列表,然後我還想通過ajax響應從服務器獲取json響應。如何做呢?在jquery ui自動完成中結合本地源代碼和遠程源代碼

var projects = ["apple", "orange"]; 

$('#search').autocomplete({ 
    source: projects 
}); 

然後附加結果從ajax?

+0

換句話說,如果一個地方的結果不存在,使AJAX調用?或者你總是想要進行AJAX調用? –

+0

實際上,無論如何都要依次進行ajax調用。換句話說,如果你有兩個來源,並且你沒有在服務器端進行組合,有沒有一種方法可以通過javascript合併兩個來源的結果? – user1906418

+0

是的,有。我認爲我有足夠的信息來發布答案 –

回答

5

你會這樣做的方式是將你從服務器返回的結果與本地結果數組結合起來。你可以通過一個函數來自動完成的source選項實現這一點:

有三個步驟,你就必須執行:

  1. 發出Ajax請求,並從服務器獲取結果。
  2. 篩選本地陣列
  3. 合併結果

這應該是非常簡單的。像這樣的東西會工作:

$("input").autocomplete({ 
    source: function(request, response) { 
     /* local results: */ 
     var localResults = $.ui.autocomplete.filter(localArray, request.term); 

     /* Remote results: */ 
     $.ajax({ 
      /* AJAX options omitted... */ 
      success: function(data) { 
       /* Process remote data using $.map, if necessary, then concatenate local 
       * and remote results. 
       */ 
       response(data.concat(localResults)); 
      } 
     }); 
    } 
}); 

我已經工作了一個完整的例子在這裏:http://jsfiddle.net/FZ4N4/

+0

如果您想顯示本地結果,並在遠程結果可用時追加遠程結果,該怎麼辦? –

+0

嗯,我覺得很愚蠢。你只需再次用新的結果調用response()。 –