天天躁日日躁狠狠躁AV麻豆-天天躁人人躁人人躁狂躁-天天澡夜夜澡人人澡-天天影视香色欲综合网-国产成人女人在线视频观看-国产成人女人视频在线观看

利用PHP+JS實(shí)現(xiàn)搜索自動(dòng)提示(實(shí)例)

我覺(jué)得我有必要寫這個(gè)教程,因?yàn)樵?jīng)見到的大部分關(guān)于自動(dòng)完成的應(yīng)用程序都只是給你一個(gè)程序源碼包,然后告訴你怎么使用,而不是告訴你它是如何工作的以及為什么這樣做。而知道這些可以讓你對(duì)這個(gè)插件可以進(jìn)一步的按自己的需求定制。

好,我們現(xiàn)在開始。
JavaScript代碼 :
復(fù)制代碼 代碼如下:
<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的解釋:
 好,從上面的代碼看到,我們需要連接到一個(gè)叫做rpc.php的文件,這個(gè)文件處理所有的操作。
lookup函數(shù)使用從文本輸入框中得到的單詞然后使用jQuery中Ajax的方法POST把它傳給rpc.php。
如果輸入字符 ‘inputString'是‘0'(Zero,譯注:在這里是指在搜索框中沒(méi)輸入任何內(nèi)容),建議框就被隱藏,這也很人性化,你想,如果在搜索框中沒(méi)有輸入任何東西,你也不期望會(huì)出現(xiàn)個(gè)建議提示框。
如果輸入框中有內(nèi)容,我們就得到了這個(gè) ‘inputString'并傳遞給rpc.php頁(yè)面,然后jQuery 的$.post()函數(shù)被使用,如下:
$.post(url, [data], [callback])
‘callback'部分可以關(guān)聯(lián)一個(gè)函數(shù),這個(gè)比較有意思,只有在數(shù)據(jù)(data)被加載成功的時(shí)候才會(huì)執(zhí)行(譯注:此處為意譯,沒(méi)看懂原文:<).
如果返回的數(shù)據(jù)(data)不為空(也就是說(shuō),有東西要顯示),那就顯示搜索提示框并且使用返回的數(shù)據(jù)(data)來(lái)代替其中的html代碼。
就這么簡(jiǎn)單!
php后臺(tái)程序(rpc.php):
如你所知,我的php后臺(tái)程序都叫做rpc.php(RPC指遠(yuǎn)程過(guò)程調(diào)用),而沒(méi)用它實(shí)際執(zhí)行的功能來(lái)命名,但是也還不錯(cuò)了。
復(fù)制代碼 代碼如下:
// php5 Implementation - uses MySQLi.
$db = new mysqli(‘localhost', ‘root' ,”, ‘a(chǎn)utoComplete');
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'])) {
        $queryString = $_POST[‘queryString'];
        // Is the string length greater than 0?
        if(strlen($queryString) >0) {
        // Run the query: We use LIKE ‘$queryString%'
        // The percentage sign is a wild-card, in my example of countries it works like this…
        // $queryString = ‘Uni';
        // Returned data = ‘United States, United Kindom';
        $query = $db->query("SELECT value FROM countries WHERE value LIKE ‘$queryString%' LIMIT 10");
        if($query) {
            // While there are results loop through them - fetching an Object (i like php5 btw!).
            while ($result = $query ->fetch_object()) {
                // Format the results, im using <li> for the list, you can change it.         
                // The onClick function fills the textbox with the result.
                echo ‘<li onclick="fill('‘.$result->value.'‘);">'.$result->value.‘</li>';
            }
        } else {
            echo ‘ERROR: There was a problem with the query.';
        }
    } else {
        // Dont do anything.
    } // There is a queryString.
} else {
    echo ‘There should be no direct access to this script!';
}
}
?>

php代碼解釋 :
鑒于代碼中我已經(jīng)加了很多注釋,在這里我就不再說(shuō)的很詳細(xì)了。
一般情況下,需要接收這個(gè) ‘QueryString' 然后在其最后使用通配符產(chǎn)生一個(gè)查詢語(yǔ)句。
這意味著在這種情況下,每次敲進(jìn)去一個(gè)字符都需要產(chǎn)生一個(gè)查詢語(yǔ)句,如果一直都這樣做的話,恐怕MYSQL會(huì)受不了。但是為了盡量的簡(jiǎn)化這個(gè)過(guò)程,這種做法對(duì)一個(gè)規(guī)模較小的應(yīng)用應(yīng)該沒(méi)什么問(wèn)題。
這段php代碼你需要在自己的系統(tǒng)中稍作修改,比如你需要更新‘$query'到你自己的數(shù)據(jù)庫(kù),需要看在哪里放你數(shù)據(jù)庫(kù)表的列名等等。
CSS樣式 :
我使用的是CSS3,天哪,它真的很好用,雖然在Firefox 或者Safari瀏覽器上會(huì)有功能限制。
復(fù)制代碼 代碼如下:
<style type="text/css">
.suggestionsBox {
    position: relative;
    left: 30px;
    margin: 10px 0px 0px 0px;
    width: 200px;
    background-color: #212427;
    -moz-border-radius: 7px;
    -webkit-border-radius: 7px;
    border: 2px solid #000;
    color: #fff;
}
.suggestionList {
    margin: 0px;
    padding: 0px;
}
.suggestionList li {
    margin: 0px 0px 3px 0px;
    padding: 3px;
    cursor: pointer;
}
.suggestionList li:hover {
    background-color: #659CD8;
}
</style>

CSS代碼都很標(biāo)準(zhǔn),沒(méi)什么需要特別指出的。
主文件HTML :
這是主文件的部分html代碼,你需要添加的就是一個(gè)輸入框,并且把 ‘onkeyup' 函數(shù)設(shè)置為lookup(this.value)。另外,我建議你不要修改它的ID,如果你不想修改上面的Javascript代碼的話。
截圖 :
我想你應(yīng)該會(huì)想要看看最后的效果是什么樣子,OK。

還有,

最后就是有用的鏈接了,我想你應(yīng)該期待很久了。
源文件點(diǎn)擊下載

php技術(shù)利用PHP+JS實(shí)現(xiàn)搜索自動(dòng)提示(實(shí)例),轉(zhuǎn)載需保留來(lái)源!

鄭重聲明:本文版權(quán)歸原作者所有,轉(zhuǎn)載文章僅為傳播更多信息之目的,如作者信息標(biāo)記有誤,請(qǐng)第一時(shí)間聯(lián)系我們修改或刪除,多謝。

主站蜘蛛池模板: 在线视频 日韩视频二区 | 九色PORNY真实丨国产免费 | 国产人成无码视频在线观看 | 国产成A人片在线观看 | 久久中文字幕综合不卡一二区 | 国产成人拍精品免费视频爱情岛 | 国产精品福利片 | 扒开老师大腿猛进AAA片邪恶 | 精品久久免费视频 | 亚洲欧美精品无码一区二在线 | 成人午夜精品无码区久久漫画日本 | 国产一区二区三区国产精品 | 久久99re7在线视频精品 | 一个人免费视频在线观看高清版 | 亚洲精品久久AV无码蜜桃 | 亚洲中文字幕欧美自拍一区 | 91嫩草私人成人亚洲影院 | 成 人 网 站毛片 | 午夜男人免费福利视频 | 久久青青草原综合伊人 | 国语自产拍大学生在线观看 | 美女靠逼漫画 | 日产精品久久久久久久蜜殿 | 3acg同人漫画禁图h | 成年女人免费播放影院 | 国产69精品久久久久乱码韩国 | 国产成人无码精品久久久免费69 | 亚洲AV无码一区二区色情蜜芽 | 狠狠鲁 我喜欢 | 亚洲精品天堂自在久久77 | 黄色亚洲片 | 国产精品自产拍在线观看网站 | 亚洲综合色婷婷在线影院 | 4399亚洲AV无码V无码网站 | 国产麻豆精品久久一二三 | 甜性涩爱全集在线观看 | 2019一級特黃色毛片免費看 | 亚洲欧美中文字幕5发布 | 国产午夜在线观看视频 | 免费A级毛片无码无遮挡内射 | 柠檬福利精品视频导航 |