最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

利用PHP+JS實現(xiàn)搜索自動提示(實例)

 更新時間:2013年06月09日 16:34:45   作者:  
本篇文章對利用PHP+JS實現(xiàn)搜索自動提示的方法進(jìn)行了詳細(xì)的分析介紹,需要的朋友參考下

我覺得我有必要寫這個教程,因為曾經(jīng)見到的大部分關(guān)于自動完成的應(yīng)用程序都只是給你一個程序源碼包,然后告訴你怎么使用,而不是告訴你它是如何工作的以及為什么這樣做。而知道這些可以讓你對這個插件可以進(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的解釋:
 好,從上面的代碼看到,我們需要連接到一個叫做rpc.php的文件,這個文件處理所有的操作。
lookup函數(shù)使用從文本輸入框中得到的單詞然后使用jQuery中Ajax的方法POST把它傳給rpc.php。
如果輸入字符 ‘inputString'是‘0'(Zero,譯注:在這里是指在搜索框中沒輸入任何內(nèi)容),建議框就被隱藏,這也很人性化,你想,如果在搜索框中沒有輸入任何東西,你也不期望會出現(xiàn)個建議提示框。
如果輸入框中有內(nèi)容,我們就得到了這個 ‘inputString'并傳遞給rpc.php頁面,然后jQuery 的$.post()函數(shù)被使用,如下:
$.post(url, [data], [callback])
‘callback'部分可以關(guān)聯(lián)一個函數(shù),這個比較有意思,只有在數(shù)據(jù)(data)被加載成功的時候才會執(zhí)行(譯注:此處為意譯,沒看懂原文:<).
如果返回的數(shù)據(jù)(data)不為空(也就是說,有東西要顯示),那就顯示搜索提示框并且使用返回的數(shù)據(jù)(data)來代替其中的html代碼。
就這么簡單!
PHP后臺程序(rpc.php):
如你所知,我的php后臺程序都叫做rpc.php(RPC指遠(yuǎn)程過程調(diào)用),而沒用它實際執(zhí)行的功能來命名,但是也還不錯了。
復(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)加了很多注釋,在這里我就不再說的很詳細(xì)了。
一般情況下,需要接收這個 ‘QueryString' 然后在其最后使用通配符產(chǎn)生一個查詢語句。
這意味著在這種情況下,每次敲進(jìn)去一個字符都需要產(chǎn)生一個查詢語句,如果一直都這樣做的話,恐怕MYSQL會受不了。但是為了盡量的簡化這個過程,這種做法對一個規(guī)模較小的應(yīng)用應(yīng)該沒什么問題。
這段php代碼你需要在自己的系統(tǒng)中稍作修改,比如你需要更新‘$query'到你自己的數(shù)據(jù)庫,需要看在哪里放你數(shù)據(jù)庫表的列名等等。
CSS樣式 :
我使用的是CSS3,天哪,它真的很好用,雖然在Firefox 或者Safari瀏覽器上會有功能限制。
復(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),沒什么需要特別指出的。
主文件HTML :
這是主文件的部分html代碼,你需要添加的就是一個輸入框,并且把 ‘onkeyup' 函數(shù)設(shè)置為lookup(this.value)。另外,我建議你不要修改它的ID,如果你不想修改上面的Javascript代碼的話。
截圖 :
我想你應(yīng)該會想要看看最后的效果是什么樣子,OK。

還有,

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

相關(guān)文章

  • 總結(jié)PHP刪除字符串最后一個字符的三種方法

    總結(jié)PHP刪除字符串最后一個字符的三種方法

    這篇文章為大家講解的是php實現(xiàn)如何去掉字符串的最后一個字符的多種方法,感興趣的同學(xué)參考下。下面來一起看看。
    2016-08-08
  • PHP使用三種方法實現(xiàn)數(shù)據(jù)采集

    PHP使用三種方法實現(xiàn)數(shù)據(jù)采集

    這篇文章主要介紹了PHP使用三種方法實現(xiàn)數(shù)據(jù)采集,對數(shù)據(jù)采集感興趣的同學(xué),可以參考下
    2021-04-04
  • php socket客戶端及服務(wù)器端應(yīng)用實例

    php socket客戶端及服務(wù)器端應(yīng)用實例

    這篇文章主要介紹了php socket客戶端及服務(wù)器端應(yīng)用實例,需要的朋友可以參考下
    2014-07-07
  • php繪制一條弧線的方法

    php繪制一條弧線的方法

    這篇文章主要介紹了php繪制一條弧線的方法,主要涉及GD庫中imagearc方法的使用技巧,需要的朋友可以參考下
    2015-01-01
  • PHP實現(xiàn)批量修改文件后綴名的方法

    PHP實現(xiàn)批量修改文件后綴名的方法

    這篇文章主要介紹了PHP實現(xiàn)批量修改文件后綴名的方法,涉及php針對文件的遞歸遍歷及重命名的相關(guān)技巧,具有一定參考借鑒價值,需要的朋友可以參考下
    2015-07-07
  • PHP 實現(xiàn) JSON 數(shù)據(jù)的編碼和解碼操作詳解

    PHP 實現(xiàn) JSON 數(shù)據(jù)的編碼和解碼操作詳解

    這篇文章主要介紹了PHP 實現(xiàn) JSON 數(shù)據(jù)的編碼和解碼操作,結(jié)合實例形式詳細(xì)分析了PHP操作json格式數(shù)據(jù)編碼、解碼函數(shù)使用場景及相關(guān)操作注意事項,需要的朋友可以參考下
    2020-04-04
  • PHP正則過濾處理微信昵稱中emoji字符的方法

    PHP正則過濾處理微信昵稱中emoji字符的方法

    這篇文章主要介紹了PHP正則過濾處理微信昵稱中emoji字符的方法,結(jié)合實例形式分析了php基于正則過濾刪除微信昵稱中emoji字符的相關(guān)操作技巧,并附帶了一個簡單的正則回調(diào)過濾操作示例,需要的朋友可以參考下
    2018-06-06
  • PHP遍歷數(shù)組的方法匯總

    PHP遍歷數(shù)組的方法匯總

    php下最靈活的東西都是數(shù)組,很多數(shù)據(jù)都是通過數(shù)組的方式顯示,這里整理下數(shù)組的遍歷方法,大家可以根據(jù)需要選用。
    2015-04-04
  • php實現(xiàn)的數(shù)組轉(zhuǎn)xml案例分析

    php實現(xiàn)的數(shù)組轉(zhuǎn)xml案例分析

    這篇文章主要介紹了php實現(xiàn)的數(shù)組轉(zhuǎn)xml,結(jié)合具體案例形式分析了PHP數(shù)組與xml轉(zhuǎn)換的實現(xiàn)方法與相關(guān)操作注意事項,需要的朋友可以參考下
    2019-09-09
  • 詳解php8中注解的實際應(yīng)用

    詳解php8中注解的實際應(yīng)用

    學(xué)過java的同學(xué)應(yīng)該都知道注解的作用,但是在php中注解有什么用呢,其實就是美化代碼和便于維護(hù)一些類的設(shè)計,下面就跟隨小編一起學(xué)習(xí)一下php8中注解的具體應(yīng)用吧
    2023-11-11

最新評論

阳朔县| 依安县| 册亨县| 平原县| 大英县| 兴安盟| 探索| 侯马市| 大名县| 玉田县| 图片| 读书| 莎车县| 呈贡县| 自贡市| 东安县| 广丰县| 怀远县| 吉林省| 本溪| 山阳县| 长寿区| 菏泽市| 铁岭市| 松桃| 崇州市| 新巴尔虎右旗| 中山市| 吕梁市| 石门县| 社会| 龙门县| 阿勒泰市| 灵川县| 米林县| 石台县| 仁寿县| 运城市| 都昌县| 丰镇市| 苍南县|