2013-06-18 34 views
0

我想構建一個簡單的自動完成功能。使JSON可供以後使用

我的第一個意圖是每次用戶添加或刪除<input>中的字符,然後顯示結果時,用%like%語句查詢特定數據庫。

但我想通過,例如,獲取JSON然後使用它來防止這種沉重的數據庫使用。

我該如何使JSON文件可用於我的jQuery腳本?

+1

保存爲一個對象 –

+0

所以,你想你的數據庫下載到JSON然後查詢JSON呢? – teynon

+0

您使用哪種服務器端語言? – Ani

回答

3

當你知道你的自動完成查找的結果應該每次都不會改變,你可以在jQuery UI的Autocomplete demo page描述緩存結果到一個對象:

$(function() { 
    var cache = {}; 
    $("#birds").autocomplete({ 
     minLength: 2, 
     source: function (request, response) { 
      var term = request.term; 
      if (term in cache) { 
       response(cache[term]); 
       return; 
      } 
      $.getJSON("search.php", request, function (data, status, xhr) { 
       cache[term] = data; 
       response(data); 
      }); 
     } 
    }); 
}); 

這聽起來像你想不過,在用戶開始輸入任何內容之前,先加載完整的JSON結果。在這種情況下,只需裝入JSON對象前面這樣當第一次加載頁面:

$.getJSON("search.php", request, function (data, status, xhr) { 
    cache[term] = data; 
    response(data); 
}); 

然後使用本地對象(在本例中「緩存」以上)來源爲您自動完成查詢(見在defaultcustom display自動完成演示,在那裏,你主要的選項),例如,像這樣:

$("#autocompleteInput").autocomplete({ 
    source: cache 
}); 
3

您可以通過執行查詢,與json_encode()編碼值,然後打印你的HTML中的值在JavaScript塊,點菜做到這一點:

<script type="text/javascript"> 
<?php 

    echo 'var json_values = \'' . $json_encoded_values . '\''; 

?> 
</script> 

...然後將允許你正如你在腳本中看到的那樣,使用json_values

然而,在你走下那條路線之前,我建議你看看jQuery UI's Autocomplete API;它會更智能/更有效地搜索用戶正在鍵入的項目(具有適當的暫停等) - 而不是每次用戶更改字段時都執行查詢。

簡單的LIKE查詢會爲您的數據庫添加很多開銷,即使經常查詢也不太可能。

相關問題