您的位置:首页技术开发JAVA Script → Ajax动态搜索代码

Ajax动态搜索代码

时间:2009/12/21 9:39:00来源:本站整理作者:我要评论(1)

最近开始学习Ajax,还不是太明白,先写了一个小的Ajax应用来了解一下Ajax的工作方式,以便进一步学

习.

在Ajax中请求数据有两种方式:GET和POST,在这里我选了一种比较简单的GET方式.要实现一个在线搜索的

功能,就是用户输入信息以后,动态的进行内容的搜索.及时把数据从服务器端发送到客户端.并对要进行

搜索的数据进行突出显示.

下面是Ajax客户端代码,这个界面是显示给用户的:

<html>
<head>
<title>一个简单的Ajax应用</title>

<script language="javascript">
var xmlHttp

function showCustomer(str) //str为要发送的数据
{
xmlHttp=dvajax_init_object();
if (xmlHttp==null)
  {
  alert ("您的浏览器不支持AJAX!");
  return;
  }
var url="ajax.asp";  //处理Ajax请求的脚本程序页面
url=url+"?uname="+escape (str); //传递的参数,为了防止出现乱码,在这里用了escape这个函数对数

据进行统一的编码.
xmlHttp.onreadystatechange=stateChanged;
xmlHttp.open("GET",url,true); //用GET方式发送数据
xmlHttp.send(null);
}


//Ajax请求状态检查函数

function stateChanged()
{
if (xmlHttp.readyState==4) //状态为4说明执行成功,把数据放到Result这个Div中
{
document.getElementById("result").innerHTML=xmlHttp.responseText;
}
if (xmlHttp.readyState==1) //状态为1时正在执行
{
document.getElementById("result").innerHTML="正在加载...";
}
}


//编写创建Ajax对象的函数.
function dvajax_init_object() {
 var RetValue;
 try {
   RetValue = new ActiveXObject("Msxml2.XMLHTTP");
  } catch (e) {
  try {
  RetValue = new ActiveXObject("Microsoft.XMLHTTP");
  } catch (oc) {
  RetValue = null;
  }
 }
 if(!RetValue && typeof XMLHttpRequest != "undefined")
  RetValue = new XMLHttpRequest();
  if (RetValue)
  return RetValue;
}
</script>
</head>

<body>
  <label>

<!-- 用keyup事件来执行函数showCustomer-->

    <input type="text" name="username" id="username" onkeyup="showCustomer(this.value)" />
  </label>

<!-- result 这个div用来显示Ajax返回的数据-->

<div id="result"></div>

</body>
</html>


有了用户界面还不行,还要有数据处理的服务器端页面.下面是服务器端页面的处理代码:

<%@LANGUAGE="VBSCRIPT" CODEPAGE="936"%>
<!--#include file="conn.asp" -->   这个是数据库的连接脚本文件
<%
response.Expires=-1 
response.Charset="gb2312"     ´在这里要设置输出的字符编码为GB2312中文编号,防止出现

乱码
set rs=server.CreateObject("adodb.recordset") ´创建记录集对象
set connect=server.CreateObject("adodb.connection") ´创建数据库连接对象
connect.open conndata ´打开数据库连接

dim searchtext
´对多关键字搜索进行支持,这里的关键字用空格分开,先取得传来的值,之后对其进行处理

searchtext=trim(replace(request.QueryString("uname"),"´",""))
searchtext=replace(searchtext," ",",")
searchtext=replace(searchtext," ",",")

if searchtext<>"" then

text1=split(searchtext,",") ´把要搜索的数据分割成数组,之后用循环语句生成要执行的SQL语句
sql="select top 10 title from test where title like ´%" & text1(0) & "%´"
for i= 1 to ubound(text1)
sql=sql & "and smt_coname like ´%" & text1(i) &"%´"
next

rs.open sql,connect,1,1
if not rs.eof and not rs.bof then
response.Write("<ul>")
while not rs.eof
response.Write("<li>" & replacetext(rs("title"),searchtext) & "</li>")  ´输出查询的结果
rs.movenext
wend
response.Write("</ul>")
else
response.Write("没有符合的记录")
end if
rs.close
set rs=nothing
connect.close
set connect=nothing ´关闭记录集和数据库连接对象
else
response.Write("没有符合的记录")
end if

´定义函数对搜索的内容进行突出显示

function replacetext(text,searchtext)
sear=split(searchtext,",")
for i=0 to ubound(sear)
 text=replace(text,sear(i),"<font color=´blue´><b>" & sear(i) & "</b></font>")
next
replacetext=text
end function
%>

上面就是服务器端的数据处理代码了,我把它保存为Ajax.asp文件,也就是上面的客户界面中Ajax对象请

求的页面了,Ajax把请求的结果放到ID为result的这个Div容器中.

这样就做了一个简单的Ajax搜索,我们可以打开页面测试,测试时只要在文本框中输入内容,就会把相关

的内容在下面进行输出,并把搜索的内容进行突出显示.

注:Ajax应用中容易出现乱码,为了防止乱码的出现,所以我们在这里有两处要注意,一个是Ajax传递参

数时要用js的escape函数对要传输的值进行统一编码,另一个是ASP文件中对内容输出之前要用Response对

象输出编码为GB2312,response.Charset="gb2312",这样一般来说就可以避免乱码的出现了.此方法兼容

相关视频

    没有数据

相关阅读 AJAX跨域问题解决办法用AjaxPro实现无刷新翻页效果用AJAX设计中级联菜单的设计如何实现最基本的AJAX框架详解如何实现最基本的AJAX框架ASP+AJAX做类似google的搜索提示ASP.NET 2.0 AJAX中Webservice调用方法PHP+Ajax实现分页技术

文章评论
发表评论

热门文章 JS文件中的中文在网页

最新文章 JS文件中的中文在网页关于一些Play 1.0.1资 JAVA中抽象类与接口的区别Java技巧:关于Cookie的操作JAVA AWT图形用户界面设计巧用Java将Word转换为Html网页文件

人气排行 JS文件中的中文在网页上显示为乱码解决方法怎么为Java程序添加漂亮背景图片代码JAVA AWT图形用户界面设计怎样获取java线程中信息JS简介及特点Java面向对象编程学习总结js鼠标滑过切换层效果代码下载教你java使用回调和线程处理响应全过程