AJAX打造博客无刷新搜索(3)
作者:HotHeart 来源:蓝色理想 发布时间:2007-08-23 08:48:00
标签:AJAX,无刷新,搜索,博客
接下来是发送搜索请求部分:
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这样的方法
实例中三个文件打包下载:AJAX打造博客无刷新搜索.rar (2.50 KB)
作者BLog: http://www.xujiwei.cn/blog/
相关阅读:


猜你喜欢
- 1.网络爬虫的基本概念网络爬虫(又称网络蜘蛛,机器人),就是模拟客户端发送网络请求,接收请求响应,一种按照一定的规则,自动地抓取互联网信息的
- 话说本来我的电脑有个2000的数据库,去年我在那个电脑上新装了一个2005的数据库。前不久我买了台新电脑,装了数据库2008 将在旧电脑上的
- 这几天无聊的很看着china.nba.com焦点图效果捣鼓了一下有待完善!兼容性:IE6 , IE7 &nb
- 1. 安装 Sublime Text 3虽然现在的 Sublime 3 还处于 beta 阶段, 但已经非常稳定了, 而且速度比 Subli
- 看到网上有一篇文章,是介绍如何做网站测试的.从一开始的链接测试,页面内容测试,到浏览器兼容性测试,负载压力测试,一直到最后的安全性测试,甚至
- 最近在做FLY量化交易系统的维护,总有客户说策略执行好慢,结果有些人展示策略一看,每个语句后边都要打印下数据。哪些数据都是辅助用的,打印出来
- 1、概述Golang是一种强类型语言,虽然在代码中经常看到i:=12这种写法,这其实是编译器在编译期间自动做了类型推断。编译器会对数据进行类
- select nid,ntitle,nreadtimes,Row_number() over(order by nreadtimes des
- 1.先用 for 循环取for item in l: if isinstance(item ,list): &nb
- 本文实例讲述了Python面向对象封装操作。分享给大家供大家参考,具体如下:目标士兵突击案例身份运算符封装封装 是面向对象编程的一大特点面向
- 前言如果你从事大数据工作,用Python的Pandas库时会发现很多惊喜。Pandas在数据科学和分析领域扮演越来越重要的角色,尤其是对于从
- 1 引子 Java,C#等各种高级语句的开发工具琳琅满目,争放异彩。但作为AJAX的主角的JavaScri
- mysql的子查询的优化一直不是很友好,一直有受业界批评比较多,也是我在sql优化中遇到过最多的问题之一,你可以点击这里 ,这里来获得一些信
- 和数据库打交道要频繁地用到SQL语句,除非你是全部用控件绑定的方式,但采用控件绑定的方式存在着灵活性差、效率低、功能弱等等缺点。因此,大多数
- E盘根目录新建一个Excel文件aa.xls后测试如下代码use tempdb go if (object_id ('udf_get
- var a = 0, b = 0;[0, 0].sort(function() {a = 1;return 0;});[0, 1].sort
- 一、三种数据文件的读取二、csv、tsv、txt 文件读取1)CSV文件读取:语法格式:pandas.read_csv(文件路径)CSV文件
- Anaconda 是一个基于 Python 的数据处理和科学计算平台,它已经内置了许多非常有用的第三方库,装上Anaconda,就相当于把
- 1 关于 Matplotlib 模块Matplotlib 是一个由 John Hunter 等开发的,用以绘制二维图形的 Python 模块
- 写个小教程,以期能让大家对jQuery有所了解,甚至喜欢上它(请不要怪我)。不废话,先说明我们的目的。我们知道,当代浏览器(modern b