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

首頁 > 開發 > AJAX > 正文

AJAX打造博客無刷新搜索

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

如果你對AJAX不是很了解,可以先看看這篇教程:《AJAX初體驗之上手篇》。

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

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

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

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

搜索結果模板sample.xml

<?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

<!-- #include file="commond.asp" --><!-- #include file="include/function.asp" --><%' commond.asp為數據庫連接文件' function.asp中有要用到的函數CheckStrDim Search_Word,XML_Result,rsSearch,sqlSearchSet 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    LoopElse    ' 關鍵字為空,則返回無搜索結果    XML_Result=XML_Result&"<result><logid>#</logid><logtitle /></result>"End IFXML_Result=XML_Result&"</blogsearch>"' 設置MIME Type為XML文檔Response.ContentType = "application/xml"'Response.CharSet = "utf-8"' 輸出搜索結果Response.Write(XML_Result)%>

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

ajaxsearch.htm

<!-- 要用到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)

接下來是發送搜索請求部分:
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)

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)

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這樣的方法

實例中三個文件打包下載:ajaxsearch.rar

發表評論 共有條評論
用戶名: 密碼:
驗證碼: 匿名發表
亚洲香蕉成人av网站在线观看_欧美精品成人91久久久久久久_久久久久久久久久久亚洲_热久久视久久精品18亚洲精品_国产精自产拍久久久久久_亚洲色图国产精品_91精品国产网站_中文字幕欧美日韩精品_国产精品久久久久久亚洲调教_国产精品久久一区_性夜试看影院91社区_97在线观看视频国产_68精品久久久久久欧美_欧美精品在线观看_国产精品一区二区久久精品_欧美老女人bb
日韩成人在线视频观看| 日韩av片永久免费网站| 国产热re99久久6国产精品| 久久亚洲精品视频| 国产91精品久久久久久久| 亚洲人成自拍网站| 亚洲视频在线观看免费| 91久久国产精品| 国产精品美女午夜av| 亚洲精品国精品久久99热一| 另类少妇人与禽zozz0性伦| 久久久欧美一区二区| 在线国产精品播放| 欧美性视频网站| 色老头一区二区三区在线观看| 久久人人爽人人| 久久精品国产亚洲一区二区| 欧美精品电影免费在线观看| 亚洲一区第一页| 国产成人精彩在线视频九色| 国产丝袜一区二区三区免费视频| 中文字幕日韩av综合精品| 国产97在线视频| 91丨九色丨国产在线| 久久久久久91香蕉国产| 国产美女精品视频免费观看| 日本一区二三区好的精华液| 欧美在线亚洲一区| 色香阁99久久精品久久久| 亚洲国产成人av在线| 欧美国产日产韩国视频| 成人av在线天堂| 久久av在线看| 成人免费午夜电影| 美女999久久久精品视频| 色婷婷综合久久久久| 国产美女久久精品香蕉69| 久久综合伊人77777| 日韩高清电影好看的电视剧电影| 91av在线不卡| 亚洲午夜久久久影院| 欧美黑人国产人伦爽爽爽| 国产mv免费观看入口亚洲| 精品露脸国产偷人在视频| 日韩亚洲精品电影| 国产aⅴ夜夜欢一区二区三区| 上原亚衣av一区二区三区| 成人黄色片在线| 免费av一区二区| 国产精品第一视频| 尤物99国产成人精品视频| 日韩高清中文字幕| 久久久久久久久久国产| 国产精品一区二区久久久久| 91免费国产网站| 国产精品一区久久久| 亚洲高清久久网| 国产亚洲免费的视频看| 美女国内精品自产拍在线播放| 亚洲一区二区自拍| 午夜精品视频在线| 精品无人区乱码1区2区3区在线| 一区二区欧美久久| 成人中心免费视频| 国产精品va在线| 国产99视频在线观看| 亚洲精品中文字幕av| 日本一区二区不卡| 国产精品久在线观看| 国产精品极品美女粉嫩高清在线| 久久视频在线看| 狠狠躁夜夜躁人人爽超碰91| 久久精品99无色码中文字幕| 色yeye香蕉凹凸一区二区av| 中文字幕日韩av综合精品| 欧美性猛xxx| 色yeye香蕉凹凸一区二区av| 日韩的一区二区| 日韩人体视频一二区| 91夜夜未满十八勿入爽爽影院| 欧美超级乱淫片喷水| 欧美剧在线观看| 日韩精品小视频| 欧美寡妇偷汉性猛交| 国产精品精品国产| 欧美性猛交丰臀xxxxx网站| 国产一区二区在线免费| 欧美日韩国产一区在线| 岛国视频午夜一区免费在线观看| 91夜夜揉人人捏人人添红杏| 亚洲国产精品成人精品| 亚洲男人第一av网站| 欧美色视频日本高清在线观看| 日韩欧美在线国产| 色婷婷综合久久久久中文字幕1| 亚洲香蕉成人av网站在线观看| 久久精品国产成人精品| 777午夜精品福利在线观看| 国产一区二区三区视频| 国产成人精品视| 欧美大尺度在线观看| 成人国产精品免费视频| 色阁综合伊人av| 日韩美女免费观看| 国产97人人超碰caoprom| 国产亚洲欧美视频| 午夜精品一区二区三区在线| 亚洲天堂av在线免费观看| 欧美性xxxxxxx| 国产999精品久久久| 亚洲一区二区三区成人在线视频精品| 日韩在线观看免费av| 色综合五月天导航| 国产精品日韩专区| 色综合久久88色综合天天看泰| 欧美激情精品久久久久久久变态| 亚洲国产中文字幕在线观看| 国产精品高潮呻吟久久av野狼| 亚洲人精品午夜在线观看| www.亚洲免费视频| 北条麻妃久久精品| 精品国产91乱高清在线观看| 国产精品日韩欧美| 亚洲黄色av网站| 亚洲成人av片| 欧美性xxxxhd| 亚洲成年人在线| 久久久极品av| 永久免费毛片在线播放不卡| 日韩av在线一区| 亚洲精品99久久久久中文字幕| 欧美中文在线观看| 久久免费高清视频| 91精品视频在线免费观看| 日本欧美在线视频| 国产高清在线不卡| 91天堂在线视频| 国产精自产拍久久久久久蜜| 亚洲人免费视频| 亚洲91精品在线| 欧亚精品在线观看| 国产亚洲一区二区在线| 亚洲无限乱码一二三四麻| 欧美激情综合色综合啪啪五月| 成人444kkkk在线观看| 欧美色xxxx| 精品在线欧美视频| 亚洲精品国产精品国自产观看浪潮| 亚洲精品国产欧美| 色在人av网站天堂精品| 日韩久久精品成人| 日韩电影大全免费观看2023年上| 色妞欧美日韩在线| 热re91久久精品国99热蜜臀| 亚洲欧美在线x视频| 国产欧美亚洲精品| 精品中文视频在线| 亚洲最新视频在线| 91精品视频在线看| 亚洲欧美日本精品| 国产精品一区二区久久精品| 51色欧美片视频在线观看| 日本久久久久久久| 亚洲男人天堂久|