All articles| All Pictures| All Softwares| All Video| Go home page| Write articles| Upload pictures

Reading number is top 10 articles
asp.net,URL传值出现错误解决_[Asp.Net教程]
PHP脚本的8个技巧(2)会话用法_[PHP教程]
关于PHP无法连接MSSQL数据库的问题_[PHP教程]
ASP.NET,2.0移动开发入门之使用模拟器_[Asp.Net教程]
DateDiff,方法在C#中的实现_[Asp.Net教程]
.NET在SQL,Server中的图片存取技术_[Asp.Net教程]
SQL存储过程入门级教程_[SQL Server教程]
在服务器端得到CheckBoxList控件最后选择项的方法_[Asp.Net教程]
如何在SQL,Server中保存和输出图片_[SQL,Server教程]
HTML 初学者指南_[Html教程]
Reading number is top 10 pictures
美女和狗狗2
中国文革时期的色情图片1
2012 national geographic daily picture8
大年初五接财神
西游四格漫画(五)
Chinese paper-cut grilles art appreciation7
青春清纯美女大集合2
A beautiful girl to bud2
Fury xp desktop theme
这才是真正的人体艺术3
Download software ranking
Tram sex maniac 2 (H) rar bag14
matrix3
小黑猫大战两米大花蛇
Boxer's Top ten classic battle2
Unix video tutorial15
apache-tomcat-6.0.33
Sora aoi - one of more PK
株洲本地在线棋牌游戏
Ashlynn Video3
金山office2007
归海一刀 published in(发表于) 2014/3/16 2:55:13 Edit(编辑)
用AJAX打造博客无刷新搜索_[AJAX教程]

用AJAX打造博客无刷新搜索_[AJAX教程]

用AJAX打造博客无刷新搜索_[AJAX教程]




























如果你对AJAX不是很了解,可以先看看这篇教程:《AJAX初体验之上手篇》




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




在本篇教程中,数据库的表名和日志查看页面以L-Blog为例,因为我的博客程序是从L-Blog修改而来。




本教程中的例子已经通过实际测试,可以直接在L-Blog或FBS中使用。当然,要真正应用的话还是需要做一些美化及完善的。




在数据库中日志内容数据表名为blog_Content,其中日志ID为log_ID,日志标题为log_Title,日志查看页面为blogview.asp,参数为日志logID。有了这些资料,就可以开始创建搜索结果的XML文档模板了。在显示搜索结果时,需要显示日志的标题,以及日志的ID来创建到查看日志的链接。




搜索结果模板sample.xml




CODE:









1



AJAX初体验之上手篇




每个result就是一个搜索结果,为了处理没有找到相关内容的情况,我定义了当搜索结果为空时logid为#。
在完成XML文档模板之后,就可以用ASP来动态生成搜索结果需要的XML文档了。搜索的关键字采用POST方式来传递。




搜索结果输出ajaxsearch.asp




CODE:






<%
' 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=""
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&"#" 
' 循环输出搜索结果
Do While Not rsSearch.EOF
' 循环输出每一个结果
XML_Result=XML_Result&""&rsSearch("log_ID")&"" 
rsSearch.MoveNext
Loop
Else
' 关键字为空,则返回无搜索结果
XML_Result=XML_Result&"#"
End IF
XML_Result=XML_Result&"
"
' 设置MIME Type为XML文档
Response.ContentType = "application/xml"
'Response.CharSet = "utf-8"
' 输出搜索结果
Response.Write(XML_Result)
%>




有了后台搜索结果输出的部分,就可以开始写前台搜索的部分了。
首先需要的是给用户输入搜索关键字及显示搜索结果的地方,我用div来分别显示这两个部分:




ajaxsearch.htm




CODE:













onkeydown="if(event.keyCode==13) AjaxSearch();" /> 



onclick="AjaxSearch();" value="搜索" />












  • 请输入关键字






完成了用户输入及结果输出的部分,就可以开始写最后的部分——客户端程序了。
首先是创建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="

  • 请输入关键字!
";
return;
}
// 给出提示,正在搜索
document.getElementById("search_result").innerHTML="
  • 正在加载,请稍候
";
// 打开一个连接,采用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="

    ";
    // 首先判断搜索结果是否为空
    if(results[0].getElementsByTagName("logid")[0].firstChild.data=="#")
    // 是空,则显示没有符合的搜索结果
    strTemp=strTemp+"
  • 无搜索结果
  • ";
    else
    // 循环输出每个搜索结果
    for(i=0;istrTemp = strTemp + "
  • " + results[i].getElementsByTagName("logtitle")[0].firstChild.data + "
  • "; 
    strTemp=strTemp+"
";
// 显示搜索结果
document.getElementById("search_result").innerHTML = strTemp
}




至此,一个完整的AJAX实例完成了。




几个经验:







  • 页面使用UTF-8编码,这样可以省却很多烦恼


  • 在获取搜索结果时,因为用的getElementsByTagName,返回的是一个集合,所以要在结果之后加上下标,如例子中的:
    results[0].getElementsByTagName("logid")[0].firstChild.data


  • 建议使用document.getElementById()来获取对象,而不要使用document.all这样的方法







作者:HotHeart 来源:蓝色理想









































添加到del.icio.us 添加到新浪ViVi 添加到百度搜藏 添加到POCO网摘 添加到天天网摘365Key 添加到和讯网摘 添加到天极网摘 添加到黑米书签 添加到QQ书签 添加到雅虎收藏 添加到奇客发现 diigo it 添加到饭否 添加到飞豆订阅 添加到抓虾收藏 添加到鲜果订阅 digg it 貼到funP 添加到有道阅读 Live Favorites 添加到Newsvine 打印本页 用Email发送本页 在Facebook上分享


Disclaimer Privacy Policy About us Site Map

If you have any requirements, please contact webmaster。(如果有什么要求,请联系站长)
Copyright ©2011-
uuhomepage.com, Inc. All rights reserved.