我想構建一個簡單的自動完成功能。使JSON可供以後使用
我的第一個意圖是每次用戶添加或刪除<input>
中的字符,然後顯示結果時,用%like%
語句查詢特定數據庫。
但我想通過,例如,獲取JSON然後使用它來防止這種沉重的數據庫使用。
我該如何使JSON文件可用於我的jQuery腳本?
我想構建一個簡單的自動完成功能。使JSON可供以後使用
我的第一個意圖是每次用戶添加或刪除<input>
中的字符,然後顯示結果時,用%like%
語句查詢特定數據庫。
但我想通過,例如,獲取JSON然後使用它來防止這種沉重的數據庫使用。
我該如何使JSON文件可用於我的jQuery腳本?
當你知道你的自動完成查找的結果應該每次都不會改變,你可以在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);
});
然後使用本地對象(在本例中「緩存」以上)來源爲您自動完成查詢(見在default和custom display自動完成演示,在那裏,你主要的選項),例如,像這樣:
$("#autocompleteInput").autocomplete({
source: cache
});
您可以通過執行查詢,與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
查詢會爲您的數據庫添加很多開銷,即使經常查詢也不太可能。
保存爲一個對象 –
所以,你想你的數據庫下載到JSON然後查詢JSON呢? – teynon
您使用哪種服務器端語言? – Ani