亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb

首頁 > 開發 > AJAX > 正文

如何用AJAX打造博客無刷新搜索

2024-09-01 08:26:27
字體:
來源:轉載
供稿:網友

現在博客很流行,相信應該上網時間稍微長點的朋友都會在這或者在那的有一個自己的博客。對于一些有一定能力的朋友,可能更喜歡自己去下載一個博客程序來架設一個自己的博客,而不是使用一些博客網站提供的服務。而大部分博客程序所帶的搜索功能是提交查詢關鍵字到搜索頁面,然后在后臺生成搜索結果,再呈現給用戶,這過程之中浪費了一些帶寬,如博客的側邊欄。要節約這一些帶寬,我們可以用AJAX來打造自己的無刷新日志搜索。

在本篇教程中,數據庫的表名和日志查看頁面以L-Blog為例,因為我的博客程序是從L-Blog修改而來。

本教程中的例子已經通過實際測試,可以直接在L-Blog或FBS中使用。當然,要真正應用的話還是需要做一些美化及完善的。

在數據庫中日志內容數據表名為blog_Content,其中日志ID為log_ID,日志標題為log_Title,日志查看頁面為blogview.asp,參數為日志logID。有了這些資料,就可以開始創建搜索結果的XML文檔模板了。在顯示搜索結果時,需要顯示日志的標題,以及日志的ID來創建到查看日志的鏈接。

搜索結果模板sample.xml

CODE:
<?xml version="1.0" encoding="utf-8"?>
<blogsearch>
<!-- 每一個reslut就是一個搜索結果 -->
<result>
<!-- 日志的ID -->
<logid>1</logid>
<!-- 日志的標題 -->
<logtitle>AJAX初體驗之上手篇</logtitle>
</result>
</blogsearch>

每個result就是一個搜索結果,為了處理沒有找到相關內容的情況,我定義了當搜索結果為空時logid為#。
在完成XML文檔模板之后,就可以用ASP來動態生成搜索結果需要的XML文檔了。搜索的關鍵字采用POST方式來傳遞。

搜索結果輸出ajaxsearch.asp

CODE:
<!-- #include file="commond.asp" -->
<!-- #include file="include/function.asp" -->
<%
' commond.asp為數據庫連接文件
' function.asp中有要用到的函數CheckStr
Dim Search_Word,XML_Result,rsSearch,sqlSearch
Set rsSearch=Server.CreateObject("ADODB.RecordSet")
' 獲取搜索關鍵字
Search_Word=CheckStr(Trim(Request.Form("searchword")))
' XML文檔頭
XML_Result="<?xml version=""1.0"" encoding=""utf-8""?><blogsearch>"
IF Search_Word<>Empty Then
' 創建查詢SQL語句
sqlSearch="SELECT log_ID,log_Title,log_Content FROM blog_Content WHERE log_Title LIKE '%"&Search_Word&"%' AND log_IsShow=True ORDER BY log_ID DESC" 
' 打開記錄集
rsSearch.open sqlSearch,Conn,1,1
' 如果沒有搜索結果就產生一個結果,logid為#,標志著沒有搜索結果
IF rsSearch.BOF AND rsSearch.EOF Then XML_Result=XML_Result&"<result><logid>#</logid><logtitle /></result>" 
' 循環輸出搜索結果
Do While Not rsSearch.EOF
' 循環輸出每一個結果
XML_Result=XML_Result&"<result><logid>"&rsSearch("log_ID")&"</logid><logtitle><![CDATA["&rsSearch("log_Title")&"]]></logtitle></result>" 
rsSearch.MoveNext
Loop
Else
' 關鍵字為空,則返回無搜索結果
XML_Result=XML_Result&"<result><logid>#</logid><logtitle /></result>"
End IF
XML_Result=XML_Result&"</blogsearch>"
' 設置MIME Type為XML文檔
Response.ContentType = "application/xml"
'Response.CharSet = "utf-8"
' 輸出搜索結果
Response.Write(XML_Result)
%>

有了后臺搜索結果輸出的部分,就可以開始寫前臺搜索的部分了。
首先需要的是給用戶輸入搜索關鍵字及顯示搜索結果的地方,我用div來分別顯示這兩個部分:

ajaxsearch.htm

CODE:
<!-- 要用到JavaScript,外部鏈入 -->
<script type="text/javascript" src="ajaxsearch.js"></script>
<!-- 用戶輸入部分 -->
<div>
<!-- 因為沒有用form,所以要處理input的keydown事件。在用戶按下回車后搜索 -->
<input type="text" id="searchword" onkeydown="if(event.keyCode==13) AjaxSearch();" /> 
<!-- 搜索按鈕 -->
<input type="button" onclick="AjaxSearch();" value="搜索" />
</div>
<!-- 搜索結果顯示部分 -->
<div id="search_result">
<!-- 初始時提示用戶輸入搜索關鍵字 -->
<ul><li>請輸入關鍵字</li></ul>
</div>

完成了用戶輸入及結果輸出的部分,就可以開始寫最后的部分——客戶端程序了。
首先是創建XMLHttpRequest對象,這部分代碼不再多說,對AJAX稍有接觸應該都看得懂這段代碼,前篇教程中也有詳細注釋:

ajaxsearch.js(part1)

CODE:
var xmlObj = false;
var xmlResult;
try {
xmlObj=new XMLHttpRequest;
}
catch(e) {
try {
xmlObj=new ActiveXObject("MSXML2.XMLHTTP");
}
catch(e2) {
try {
xmlObj=new ActiveXObject("Microsoft.XMLHTTP");
}
catch(e3) {
xmlObj=false;
}
}
}
if (!xmlObj) {
alert("XMLHttpRequest init Failed!");
}

接下來是發送搜索請求部分:

ajaxsearch.js(part2)

CODE:
function AjaxSearch() {
var searchword;
// 獲取搜索關鍵字,并且進行URLEncode
searchword=escape(document.getElementById("searchword").value);
if(searchword=="") {
// 如果關鍵字為空,則提示用戶輸入關鍵字
document.getElementById("search_result").innerHTML="<ul><li>請輸入關鍵字!</li></ul>";
return;
}
// 給出提示,正在搜索
document.getElementById("search_result").innerHTML="<ul><li>正在加載,請稍候</li></ul>";
// 打開一個連接,采用POST
xmlObj.open ("POST", "ajaxsearch.asp", true);
// 設置請求頭,表單內容格式為URLEncoded
xmlObj.setRequestHeader("Content-Type","application/x-www-form-urlencoded");
// 設置完成請求后響應函數
xmlObj.onreadystatechange=function() {
// 完成響應
if(xmlObj.readyState==4) {
// 狀態正常
if(xmlObj.status==200) {
// 設置xmlResult為搜索結果XML文檔
xmlResult=xmlObj.responseXML;
// 調用AjaxShowResult()顯示搜索結果
AjaxShowResult();
}
}
}
// 發送請求,內容為搜索的關鍵字
xmlObj.send("searchword="+searchword);
}

最后是搜索結果的顯示:

ajaxsearch.js(part3)

CODE:
function AjaxShowResult() {
var results,i,strTemp;
// 獲取搜索結果集合
results=xmlResult.getElementsByTagName("result");
// 用無序列表來顯示搜索結果
strTemp="<ul>";
// 首先判斷搜索結果是否為空
if(results[0].getElementsByTagName("logid")[0].firstChild.data=="#")
// 是空,則顯示沒有符合的搜索結果
strTemp=strTemp+"<li>無搜索結果</li>";
else
// 循環輸出每個搜索結果
for(i=0;i<results.length;i++)
strTemp = strTemp + "<li><a href='blogview.asp?logID=" + results[i].getElementsByTagName("logid")[0].firstChild.data + "'>" + results[i].getElementsByTagName("logtitle")[0].firstChild.data + "</a></li>"; 
strTemp=strTemp+"</ul>";
// 顯示搜索結果
document.getElementById("search_result").innerHTML = strTemp
}

至此,一個完整的AJAX實例完成了。

幾個經驗:

  • 頁面使用UTF-8編碼,這樣可以省卻很多煩惱
  • 在獲取搜索結果時,因為用的getElementsByTagName,返回的是一個集合,所以要在結果之后加上下標,如例子中的:
    results[0].getElementsByTagName("logid")[0].firstChild.data
  • 建議使用document.getElementById()來獲取對象,而不要使用document.all這樣的方法
 

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
日韩在线视频一区| 国产精品伦子伦免费视频| 成人国产精品久久久久久亚洲| 亚洲香蕉在线观看| 中文字幕亚洲在线| 亚洲美女中文字幕| 中文字幕在线精品| 欧美高清videos高潮hd| 欧美黑人又粗大| 国产成人拍精品视频午夜网站| 亚洲精品国产福利| 欧洲成人午夜免费大片| 国产精品第100页| 国产精品入口日韩视频大尺度| 欧美日韩激情小视频| 国产欧美精品一区二区三区-老狼| 国产精品免费在线免费| 欧美成人黑人xx视频免费观看| 深夜福利91大全| 国产精品视频男人的天堂| 91成人国产在线观看| 91在线视频九色| 亚洲一区二区三区在线视频| 国产亚洲精品激情久久| 欧美精品久久久久久久久久| 久久人人爽人人| 亚洲xxxx18| 亚洲第五色综合网| 亚洲免费电影一区| 欧美—级高清免费播放| 亚洲激情视频在线观看| 亚洲成人精品av| 欧美国产中文字幕| 国产一区二区三区久久精品| 欧美在线亚洲一区| 97久久精品在线| 国语自产精品视频在线看一大j8| 日韩欧美999| 久久久久久尹人网香蕉| 亚洲免费人成在线视频观看| 国产精品一区av| 国产精品爽爽爽爽爽爽在线观看| 久久久精品一区| 亚洲第一福利视频| 精品视频—区二区三区免费| 亚洲欧洲激情在线| 日韩精品久久久久久久玫瑰园| 日本成人免费在线| 精品女同一区二区三区在线播放| 国产精品日韩在线| 中文字幕亚洲综合久久筱田步美| 欧洲成人在线观看| 欧美日韩中国免费专区在线看| 在线亚洲男人天堂| 亚洲人a成www在线影院| 欧美精品第一页在线播放| 久久久999精品视频| 国产视频福利一区| 国产精品成人一区二区三区吃奶| 最近2019年中文视频免费在线观看| 国产精品私拍pans大尺度在线| 日韩亚洲欧美成人| 精品一区精品二区| 亚洲精品动漫100p| 日韩av电影中文字幕| 日韩欧美在线视频观看| 欧美麻豆久久久久久中文| 欧美大胆在线视频| xvideos亚洲人网站| 韩曰欧美视频免费观看| 亚洲国产天堂久久综合网| 欧美激情中文字幕乱码免费| 91亚洲午夜在线| 亚洲成人在线网| 日韩中文字幕在线精品| 51ⅴ精品国产91久久久久久| 91久久夜色精品国产网站| 日韩在线观看免费高清| 国产亚洲一区二区精品| 欧美成人h版在线观看| 亚洲精品日产aⅴ| 中文字幕精品久久| 色婷婷久久一区二区| 日韩国产欧美精品一区二区三区| 伊人久久久久久久久久久| 午夜欧美大片免费观看| 国产精品久久久久久亚洲影视| 在线看国产精品| 亚洲欧洲美洲在线综合| 国产精品欧美一区二区三区奶水| 日本久久久a级免费| 欧美精品激情在线| 色偷偷9999www| 日韩欧美成人免费视频| 欧美小视频在线观看| 久久久www成人免费精品| 日韩电影在线观看永久视频免费网站| 日韩欧美精品网站| 亚洲欧美日韩中文在线| 日本成熟性欧美| 精品久久久香蕉免费精品视频| 色综合色综合网色综合| 亚洲欧美在线看| 亚洲电影在线看| www.xxxx精品| 日本国产高清不卡| 精品综合久久久久久97| 91精品久久久久久久久久入口| 色综合视频一区中文字幕| 久久色在线播放| 国产精品igao视频| 亚洲国产精品视频在线观看| 97色在线视频| 精品一区精品二区| 亚洲成人激情视频| 亚洲国产成人av在线| 日本一区二区三区四区视频| 激情成人在线视频| 91视频国产一区| 亚洲精品短视频| 疯狂做受xxxx高潮欧美日本| 九九热在线精品视频| 亚洲一区二区中文| 欧美www在线| 成人激情在线播放| 国产精品久久久久久久久久久久久| 亚洲一品av免费观看| 久久精品这里热有精品| 国产69精品久久久久9| 欧美成人午夜激情视频| 91手机视频在线观看| 国模gogo一区二区大胆私拍| 日韩欧美国产一区二区| 国产精品免费看久久久香蕉| 狠狠色香婷婷久久亚洲精品| 红桃视频成人在线观看| 中文字幕日韩精品在线观看| 久久影视电视剧凤归四时歌| 国产精品第一第二| 欧美精品videosex极品1| 中文字幕视频在线免费欧美日韩综合在线看| 久久免费视频在线观看| 在线电影av不卡网址| 久久琪琪电影院| 国产一区深夜福利| 日韩欧美国产高清91| 国产一区二区色| 欧美日韩国产一区在线| 91精品国产综合久久香蕉的用户体验| 精品国产电影一区| 午夜精品久久久久久久久久久久| 精品毛片网大全| 91禁国产网站| 欧洲精品久久久| 欧美性极品少妇精品网站| 精品国产精品三级精品av网址| 中文字幕av日韩| 久久不射热爱视频精品| 亚洲欧美一区二区精品久久久| 国产精品久久一区主播| 91在线视频九色| 欧美在线亚洲在线| 北条麻妃99精品青青久久| 欧美午夜宅男影院在线观看|