作者BLog: http://www.xujiwei.cn/blog/
如果你對AJAX不是很了解,可以先看看這篇教程:《AJAX初體驗之上手篇》。
現(xiàn)在博客很流行,相信應(yīng)該上網(wǎng)時間稍微長點(diǎn)的朋友都會在這或者在那的有一個自己的博客。對于一些有一定能力的朋友,可能更喜歡自己去下載一個博客程序來架設(shè)一個自己的博客,而不是使用一些博客網(wǎng)站提供的服務(wù)。而大部分博客程序所帶的搜索功能是提交查詢關(guān)鍵字到搜索頁面,然后在后臺生成搜索結(jié)果,再呈現(xiàn)給用戶,這過程之中浪費(fèi)了一些帶寬,如博客的側(cè)邊欄。要節(jié)約這一些帶寬,我們可以用AJAX來打造自己的無刷新日志搜索。
在本篇教程中,數(shù)據(jù)庫的表名和日志查看頁面以L-Blog為例,因為我的博客程序是從L-Blog修改而來。
本教程中的例子已經(jīng)通過實(shí)際測試,可以直接在L-Blog或FBS中使用。當(dāng)然,要真正應(yīng)用的話還是需要做一些美化及完善的。
在數(shù)據(jù)庫中日志內(nèi)容數(shù)據(jù)表名為blog_Content,其中日志ID為log_ID,日志標(biāo)題為log_Title,日志查看頁面為blogview.asp,參數(shù)為日志logID。有了這些資料,就可以開始創(chuàng)建搜索結(jié)果的XML文檔模板了。在顯示搜索結(jié)果時,需要顯示日志的標(biāo)題,以及日志的ID來創(chuàng)建到查看日志的鏈接。
搜索結(jié)果模板sample.xml
CODE: <?xml version="1.0" encoding="utf-8"?> <blogsearch> <!-- 每一個reslut就是一個搜索結(jié)果 --> <result> <!-- 日志的ID --> <logid>1</logid> <!-- 日志的標(biāo)題 --> <logtitle>AJAX初體驗之上手篇</logtitle> </result> </blogsearch>
每個result就是一個搜索結(jié)果,為了處理沒有找到相關(guān)內(nèi)容的情況,我定義了當(dāng)搜索結(jié)果為空時logid為#。 在完成XML文檔模板之后,就可以用ASP來動態(tài)生成搜索結(jié)果需要的XML文檔了。搜索的關(guān)鍵字采用POST方式來傳遞。
搜索結(jié)果輸出ajaxsearch.asp
CODE: <!-- #include file="commond.asp" --> <!-- #include file="include/function.asp" --> <% ' commond.asp為數(shù)據(jù)庫連接文件 ' function.asp中有要用到的函數(shù)CheckStr Dim Search_Word,XML_Result,rsSearch,sqlSearch Set rsSearch=Server.CreateObject("ADODB.RecordSet") ' 獲取搜索關(guān)鍵字 Search_Word=CheckStr(Trim(Request.Form("searchword"))) ' XML文檔頭 XML_Result="<?xml version=""1.0"" encoding=""utf-8""?><blogsearch>" IF Search_Word<>Empty Then ' 創(chuàng)建查詢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 ' 如果沒有搜索結(jié)果就產(chǎn)生一個結(jié)果,logid為#,標(biāo)志著沒有搜索結(jié)果 IF rsSearch.BOF AND rsSearch.EOF Then XML_Result=XML_Result&"<result><logid>#</logid><logtitle /></result>" ' 循環(huán)輸出搜索結(jié)果 Do While Not rsSearch.EOF ' 循環(huán)輸出每一個結(jié)果 XML_Result=XML_Result&"<result><logid>"&rsSearch("log_ID")&"</logid><logtitle><![CDATA["&rsSearch("log_Title")&"]]></logtitle></result>" rsSearch.MoveNext Loop Else ' 關(guān)鍵字為空,則返回?zé)o搜索結(jié)果 XML_Result=XML_Result&"<result><logid>#</logid><logtitle /></result>" End IF XML_Result=XML_Result&"</blogsearch>" ' 設(shè)置MIME Type為XML文檔 Response.ContentType = "application/xml" 'Response.CharSet = "utf-8" ' 輸出搜索結(jié)果 Response.Write(XML_Result) %>
有了后臺搜索結(jié)果輸出的部分,就可以開始寫前臺搜索的部分了。 首先需要的是給用戶輸入搜索關(guān)鍵字及顯示搜索結(jié)果的地方,我用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> <!-- 搜索結(jié)果顯示部分 --> <div id="search_result"> <!-- 初始時提示用戶輸入搜索關(guān)鍵字 --> <ul><li>請輸入關(guān)鍵字</li></ul> </div>
出處:藍(lán)色理想
責(zé)任編輯:moby
上一頁 下一頁 AJAX打造博客無刷新搜索 [2]
◎進(jìn)入論壇網(wǎng)絡(luò)編程版塊參加討論
|