我想爲我的搜索框實現一個基於ajax的自動完成功能,我碰到了,implementing autocomplete in my website。從MYSQL表AJAX自動完成查詢
現在我想知道的是,我附加一個數據源到控件,但到目前爲止,我已經看到數據源需要一個文本庫模式,我不喜歡它的查詢,它控制調用查詢並且它返回控件的過濾器必須應用的記錄。
希望我的問題是清楚的
我想爲我的搜索框實現一個基於ajax的自動完成功能,我碰到了,implementing autocomplete in my website。從MYSQL表AJAX自動完成查詢
現在我想知道的是,我附加一個數據源到控件,但到目前爲止,我已經看到數據源需要一個文本庫模式,我不喜歡它的查詢,它控制調用查詢並且它返回控件的過濾器必須應用的記錄。
希望我的問題是清楚的
你怎麼認爲你可以將其鏈接到客戶端的查詢? 您可以將其鏈接到服務器的AJAX調用,該服務器返回選項列表。 控件的過濾器將在該選項列表上執行其他過濾。
最好的做法是,火的AJAX 在頁面加載,到服務器的功能,這將查詢到數據庫(MySQL的你的情況),並在JSON格式獲取選項列表。將選項列表分配爲自動完成的輸入。 (它顯然比每次用戶開始在搜索框中輸入ajax-request都好。)
如果你使用jquery,它可以是這樣的。
$(function(){ //runs on page load
$.ajax({
type: "POST",
url: "/searchlist/", //server function that returns the search list
data: '',
dataType: "json",
success: function(json){
search_choices = json.list; // search option list
$("input#searchbox").autocomplete(search_choices, {
max: 4,
scroll: false,
autoFill: true,
multiple: true,
matchContains: true,
multipleSeparator: " ",
width: 180
});
}
});
});
我可以提供你在圖書館以外的例子,但jquery,但我希望這可以讓你找到自己的方式。
編輯:不,您的數據庫不需要排序的選擇。這是你的服務器功能,應該做所有的排序。使用,
autocomplete(url_to_server_function, options)
並且您的服務器功能將獲取搜索詞(搜索框中的關鍵字用戶類型),作爲獲取請求。在那裏過濾數據庫,這是您可以將相關單詞與結果掛鉤的地方。只需列出您希望顯示爲建議的所有內容,然後以序列化json格式返回,並讓自動完成負責匹配和排序數據。
我喜歡你的想法,我只做類似的事情。不過,我現在有一個新的疑問。我的數據庫是否必須以我希望顯示的方式包含數據?我的意思是,當我輸入「com」時,它會查詢我的數據庫中所有以「com」開頭的關鍵字,並將它們顯示爲電腦,隔間等。但是,如果我希望它更復雜並將其與相關單詞相結合,就像谷歌的建議,所以「com」可能意味着「來這裏」,「電腦課程」等。雅虎YUI Widget或任何其他提供的功能呢? – 2009-07-14 09:49:47