一如往常,demo和源碼的zip包在文章最後,慢慢欣賞吧!
我覺得我有必要寫這個教程,因為曾經見到的大部分關於自動完成的應用程序都只是給你一個程序源碼包,然後告訴你怎麼使用,而不是告訴你它是如何工作的以及為什麼這樣做。而知道這些可以讓你對這個插件可以進一步的按自己的需求定制(關於這一點我在我的blog裡寫過不少關於其他應用的文章)。
好,我們現在開始。
JavaScript代碼:
<script src="jquery-1.2.1.pack.js" type="text/javascript"></script>
<script type="text/javascript">
function lookup(inputString) {
if(inputString.length == 0) {
// Hide the suggestion box.
$(‘#suggestions’).hide();
} else {
$.post("rpc.php", {queryString: ""+inputString+""}, function(data){
if(data.length >0) {
$(‘#suggestions’).show();
$(‘#autoSuggestionsList’).html(data);
}
});
}
} // lookup
function fill(thisValue) {
$(‘#inputString’).val(thisValue);
$(‘#suggestions’).hide();
}
</script>
JS的解釋:
好,從上面的代碼看到,我們需要連接到一個叫做rpc.php的文件,這個文件處理所有的操作。
lookup函數使用從文本輸入框中得到的單詞然後使用jQuery中Ajax的方法POST把它傳給rpc.php。
如果輸入字符 ‘inputString’是‘0’(Zero,譯注:在這裡是指在搜索框中沒輸入任何內容),建議框就被隱藏,這也很人性化,你想,如果在搜索框中沒有輸入任何東西,你也不期望會出現個建議提示框。
如果輸入框中有內容,我們就得到了這個 ‘inputString’並傳遞給rpc.php頁面,然後jQuery 的$.post()函數被使用,如下:
$.post(url, [data], [callback])
‘callback’部分可以關聯一個函數,這個比較有意思,只有在數據(data)被加載成功的時候才會執行(譯注:此處為意譯,沒看懂原文:<).
如果返回的數據(data)不為空(也就是說,有東西要顯示),那就顯示搜索提示框並且使用返回的數據(data)來代替其中的html代碼。
就這麼簡單!
PHP後台程序(rpc.php):
如你所知(譯注:不好意思,看王小波就學會了這麼個口頭禅),我的php後台程序都叫做rpc.php(RPC指遠程過程調用),而沒用它實際執行的功能來命名,但是也還不錯了。
// PHP5 Implementation - uses MySQLi.
$db = new mysqli(‘localhost’, ‘root’ ,”, ‘autoComplete’);
if(!$db) {
// Show error if we cannot connect.
echo ‘ERROR: Could not connect to the database.’;
} else {
// Is there a posted query string?
if(isset($_POST[‘queryString’])) {
$quer