您好,登錄后才能下訂單哦!
本篇文章給大家分享的是有關(guān)怎么在PHP中利用JavaScript實(shí)現(xiàn)一個(gè)搜索自動(dòng)提示功能,小編覺得挺實(shí)用的,因此分享給大家學(xué)習(xí),希望大家閱讀完這篇文章后可以有所收獲,話不多說,跟著小編一起來看看吧。
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,譯注:在這里是指在搜索框中沒輸入任何內(nè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í)行(譯注:此處為意譯,沒看懂原文:<).
如果返回的數(shù)據(jù)(data)不為空(也就是說,有東西要顯示),那就顯示搜索提示框并且使用返回的數(shù)據(jù)(data)來代替其中的html代碼。
就這么簡(jiǎn)單!
PHP后臺(tái)程序(rpc.php):
如你所知,我的php后臺(tái)程序都叫做rpc.php(RPC指遠(yuǎn)程過程調(diào)用),而沒用它實(shí)際執(zhí)行的功能來命名,但是也還不錯(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)加了很多注釋,在這里我就不再說的很詳細(xì)了。
一般情況下,需要接收這個(gè) ‘QueryString' 然后在其最后使用通配符產(chǎn)生一個(gè)查詢語(yǔ)句。
這意味著在這種情況下,每次敲進(jìn)去一個(gè)字符都需要產(chǎn)生一個(gè)查詢語(yǔ)句,如果一直都這樣做的話,恐怕MYSQL會(huì)受不了。但是為了盡量的簡(jiǎn)化這個(gè)過程,這種做法對(duì)一個(gè)規(guī)模較小的應(yīng)用應(yīng)該沒什么問題。
這段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>
以上就是怎么在PHP中利用JavaScript實(shí)現(xiàn)一個(gè)搜索自動(dòng)提示功能,小編相信有部分知識(shí)點(diǎn)可能是我們?nèi)粘9ぷ鲿?huì)見到或用到的。希望你能通過這篇文章學(xué)到更多知識(shí)。更多詳情敬請(qǐng)關(guān)注億速云行業(yè)資訊頻道。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場(chǎng),如果涉及侵權(quán)請(qǐng)聯(lián)系站長(zhǎng)郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。