当前位置: 首页 > 图文教程 > 网络编程 > AJAX技术 > 使用AJAX技术打造博客无刷新搜索引擎

AJAX技术
AJAX 用户注册时的应用实例
ajax readyState的五种状态详解
php AJAX POST的使用实例代码
Ajax 用户名验证是否存在
Ajax+PHP简单基础入门实例教程
AJAX 异步传输数据的问题
ASP AJAX 静态分页
js装载xml文件然后发向服务器的实现代码
完成了AJAX树附原理分析
AJAX 支持搜索引擎问题分析
ajax Suggest类似google的搜索提示效果
Ajax 框架学习笔记
用ajax xml的数据读取的HelloWorld程序
Ajax 表单验证 实现代码
Ajax request response 乱码解决方法
AJAX 随记
ajax 乱码的一种解决方法
ajax session过期问题的几个解决方案
四步学会 Ajax
Ajax异步(请求)提交类 支持跨域

使用AJAX技术打造博客无刷新搜索引擎


出处:互联网   整理: 软晨网(RuanChen.com)   发布: 2009-11-03   浏览: 80 ::
收藏到网摘: n/a

 
现在博客很流行,相信应该上网时间稍微长点的朋友都会在这或者在那的有一个自己的博客。对于一些有一定能力的朋友,可能更喜欢自己去下载一个博客程序来架设一个自己的博客,而不是使用一些博客网站提供的服务。而大部分博客程序所带的搜索功能是提交查询关键字到搜索页面,然后在后台生成搜索结果,再呈现给用户,这过程之中浪费了一些带宽,如博客的侧边栏。要节约这一些带宽,我们可以用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 />&