您的位置: 首页 > 技术文档 > 网络编程 > AJAX打造博客无刷新搜索
你的编程语言可以这样做吗? 回到列表 JPEG 简易文档 V2.14
 AJAX打造博客无刷新搜索

作者:HotHeart 时间: 2006-07-29 文档类型:原创 来自:蓝色理想

第 1 页 AJAX打造博客无刷新搜索 [1]
第 2 页 AJAX打造博客无刷新搜索 [2]

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

实例中三个文件打包下载:ajaxsearch.rar

经典论坛讨论:
http://bbs.blueidea.com/thread-2661871-1-1.html

出处:蓝色理想
责任编辑:moby

上一页 AJAX打造博客无刷新搜索 [1] 下一页

◎进入论坛网络编程版块参加讨论

相关文章 更多相关链接
RIA和AJAX分析
博客可用性:十大错误设计
AJAX初体验之上手篇
Flash & Ajax 操作 XML
AJAX应用之注册用户即时检测
作者文章
AJAX初体验之上手篇
热门搜索:CSS Fireworks 设计比赛 网页制作 web标准 用户体验 UE photoshop Dreamweaver Studio8 Flash 手绘 CG
站点最新 站点最新列表
全兼容的纯CSS级联菜单要点浅析
CSS Sprites 图片整合技术
雅安,一场中式旅行
热烈祝贺"醒狮杯"圆满结束
菊花宝典大赏大奖教程《阳台》
交互设计师怎样和产品团队合作
Photoshop打造个性潮流音乐海报
简单解读面包屑
CSS盒模型
Apple与Microsoft网站可用性研究
栏目最新 栏目最新列表
safari 4 新特性
Photoshop制作精美高光流线字
IE下img多余5像素空白解决方法
XHTML1.0与HTML兼容指引16条
JavaScript优化细节
全兼容的纯CSS级联菜单要点浅析
CSS Sprites 图片整合技术
Photoshop打造个性潮流音乐海报
CSS盒模型
45度地图编辑器及游戏开发心得
>> 分页 首页 前页 后页 尾页 页次:2/21个记录/页 转到 页 共2个记录

蓝色理想版权申明:除部分特别声明不要转载,或者授权我站独家播发的文章外,大家可以自由转载我站点的原创文章,但原作者和来自我站的链接必须保留(非我站原创的,按照原来自一节,自行链接)。文章版权归我站和作者共有。

转载要求:转载之图片、文件,链接请不要盗链到本站,且不准打上各自站点的水印,亦不能抹去我站点水印。

特别注意:本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有,文章若有侵犯作者版权,请与我们联系,我们将立即删除修改。

本文现有 4 条评论 暂时没有人参与评分


柠檬园主 Publish at 2007-1-7 0:19:31
就算全用UTF-8,也有可能出现双字节字符传递时编码出错的问题,还是在POST的时候escape一下。
我用的方法是encodeURIComponent()
227115534 Publish at 2006-12-1 16:37:13
很不错哦
zhuomingliang Publish at 2006-9-11 11:38:32
www.late-fall.com
lp840609 Publish at 2006-8-7 9:43:50
1111
您的评论
用户名:  口令:
说明:输入正确的用户名和密码才能参与评论。如果您不是本站会员,你可以注册 为本站会员。
注意:文章中的链接、内容等需要修改的错误,请用报告错误,以利文档及时修改。
不评分 1 2 3 4 5
注意:请不要在评论中含与内容无关的广告链接,违者封ID
请您注意:
·不良评论请用报告管理员,以利管理员及时删除。
·尊重网上道德,遵守中华人民共和国的各项有关法律法规
·承担一切因您的行为而直接或间接导致的民事或刑事法律责任
·本站评论管理人员有权保留或删除其管辖评论中的任意内容
·您在本站发表的作品,本站有权在网站内转载或引用
·参与本评论即表明您已经阅读并接受上述条款
推荐文档 | 打印文档 | 评论文档 | 报告错误  
专业书推荐 更多内容
《Web标准设计》
《美工神话》
《Flash短片轻松学》
Illustrator CS3质感绘画表现技法
大师之路--Photoshop 完全解析
《用户体验要素》
HTML与CSS入门经典(第7版)
作品集 更多内容

GenNext网站 Aqua land WESBROOK 毕业设计。 LogoMark Asia 毕业设计。 Mobile GUI 176X220 HTML Form Elements