asp.net和ajax实现智能搜索功能代码

 更新时间:2010年03月04日 19:44:26   作者:  
近来一直在开发股票模拟系统,终于告一段落了,回想起来感慨很多。突然想应该做点总结了,想来想去还是觉得通过写点日志来把相关的知识点记录下来,下面就我在项目中经常用到的动态提示搜索选项功能的实现。
第一步,先做好搜索页面
复制代码 代码如下:

<%@ Page Language="VB" AutoEventWireup="false" CodeFile="Default.aspx.vb" Inherits="_Default" %>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml" >
<head runat="server">
<title>无标题页</title>
<script language=javascript src=JScript.js type="text/javascript" ></script>
<style>
#result{
position:absolute;
width:150px;
height:auto;
margin:0px;
z-index:1;
font-size:14px;
border: 1px dashed #ccccc4;
display:none;
}
#result .firstHang{
background-color:#DDDDDD;
height:15px;
padding-top:5px;
}
#result b{
width:61px;
float:left;
}
#result nobr{
width:61px;
float:left;
}
#result .otherHang{
background-color:#FFFFFF;
height:15px;
padding-top:5px;
}
#content{
margin-left:0px;
padding-left:0px;
}
</style>
</head>
<body>
<form id="form1" runat="server">
<div align=center style="padding-top:100px">
<input id="searchTxt" onkeyUp="startRequest(this.value)" /> <!-- 输入框 -->
</div>
<div id="result" align="center"> <!-- 下拉搜索框 -->
<div class="firstHang">
<b>搜索</b><b>标题</b>
</div>
<div id="stockListDiv"></div>
</div>
</form>
</body>
</html>
<script language="javascript">
var obj=document.getElementById("result");
var rela=document.getElementById("searchTxt");
SetDivLocation(obj,rela);
function SetDivLocation(obj,rela) //设置下拉搜索框与输入框的相对位置
{
var x,y;
var oRect=rela.getBoundingClientRect(); //获得输入框的位置
x=oRect.left;
y=oRect.top;
obj.style.left=x+"px"; //这里要加上px,否则在fiexfox就会失效
obj.style.top=y+rela.offsetHeight+"px";
}
</script>

第二步,添加返回搜索结果的页面,该页面由于不用在客户端显示,所以就不用做界面。
复制代码 代码如下:

Imports System.Text
Partial Class Search
Inherits System.Web.UI.Page
Protected Sub Page_Load(ByVal sender As Object, ByVal e As System.EventArgs) Handles Me.Load
Dim searchContent As String = Request("content").ToString  '获取搜索内容
Dim searchResult As New StringBuilder
If IsNumeric(searchContent) Then '判断是否为数字,输入不同的内容
searchResult.Append("<div class='otherHang'><nobr>11</nobr><nobr>11</nobr></div>")
searchResult.Append("<div class='otherHang'><nobr>22</nobr><nobr>22</nobr></div>")
searchResult.Append("<div class='otherHang'><nobr>22</nobr><nobr>22</nobr></div>")
Else
searchResult.Append("<div class='otherHang'><nobr>aa</nobr><nobr>aa</nobr></div>")
searchResult.Append("<div class='otherHang'><nobr>bb</nobr><nobr>bb</nobr></div>")
searchResult.Append("<div class='otherHang'><nobr>cc</nobr><nobr>cc</nobr></div>")
End If
Response.Write(searchResult.ToString) '向客户端发送结果
Response.End() '关闭客户端输出流
End Sub
End Class

第三步就是最关键的一步了
复制代码 代码如下:

// JScript 文件
var xmlHttp;
function cratexmlHttpRequest()
{
//判断是否为IE浏览器
if(window.ActiveXObject)
{
xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
}
else if(window.XMLHttpRequest)
{
xmlHttp=new window.XMLHttpRequest();
}
}
//启动对页面的请求
function startRequest(content)
{
cratexmlHttpRequest();
//设置请求状态变化调用的方法
xmlHttp.onreadystatechange=handleState;
//建立对服务器的调用
var url="Search.aspx?content="+escape(content); '发送页面url
xmlHttp.open("get",url,true);
xmlHttp.send(null);
}
function handleState()
{
try{
if(xmlHttp.readyState==4)
{
if(xmlHttp.status==200)
{
var data=xmlHttp.responseText; '得到搜索结果
var result=document.getElementById("result");
var stockListDiv=document.getElementById("stockListDiv");
if(data=="")            '如果搜索结果为空,不显示下拉框
{
result.style.display="none";
stockListDiv.innerHTML="";
}
else
{
stockListDiv.innerHTML=data;   '显示下拉框
result.style.display="block";
}
}
}
}
catch(error)
{error.message}
}

最后实现的效果如下:

相关文章

  • 压缩aspx页面删除多余空格的两种方法

    压缩aspx页面删除多余空格的两种方法

    这篇文章主要介绍了压缩aspx页面移除多余空格的两种方法,可以在发布页面之前压缩aspx,无须浪费web server的cpu,需要的朋友可以参考下
    2014-02-02
  • ASP.NET Core缓存静态资源示例详解

    ASP.NET Core缓存静态资源示例详解

    我们在优化Web服务的时候,对于静态的资源文件,通常都是通过客户端缓存、服务器缓存、CDN缓存,这三种方式来缓解客户端对于Web服务器的连接请求压力的。下面这篇文章主要给大家介绍了关于ASP.NET Core缓存静态资源的相关资料,需要的朋友可以参考下。
    2018-02-02
  • ASP.NET Cookie 操作实现

    ASP.NET Cookie 操作实现

    本节中的主题描述如何在 ASP.NET Web 应用程序中创建 Cookie。Cookie 是一些小的文本文件,服务器和浏览器在收到每个页请求时交换它们,您还可以使用这些小文本文件来存储帮助针对每个用户自定义您的应用程序的信息。
    2009-11-11
  • 记Asp.Net Core Swagger使用并带域接口处理的方法

    记Asp.Net Core Swagger使用并带域接口处理的方法

    这篇文章主要介绍了记Asp.Net Core Swagger使用并带域接口处理的方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-03-03
  • VS2010发布Web网站技术攻略

    VS2010发布Web网站技术攻略

    本篇文章主要包含了完整的发布网站步骤、发布网站过程中可能遇到的问题,以及配套的解决方法,相信感兴趣的朋友一定会喜欢这篇文章的
    2015-07-07
  • ASP.NET学习CORE中使用Cookie身份认证方法

    ASP.NET学习CORE中使用Cookie身份认证方法

    本篇文章主要给大家详细分析了ASP.NET学习CORE中使用Cookie身份认证方法以及相关的实例代码,有需要的朋友参考下吧。
    2018-01-01
  • .Net获取URL中文参数值的乱码问题解决方法总结

    .Net获取URL中文参数值的乱码问题解决方法总结

    这篇文章主要介绍了.Net获取URL中文参数值的乱码问题解决方法,总结分析了针对URL参数传递中出现的乱码问题与相应的解决方法,具有一定参考借鉴价值,需要的朋友可以参考下
    2016-08-08
  • asp.net 验证码的简单制作(vb.net+C#)

    asp.net 验证码的简单制作(vb.net+C#)

    asp.net中实现简单验证码的方法,需要的朋友可以参考下
    2012-05-05
  • 简单谈谈.NET Core跨平台开发

    简单谈谈.NET Core跨平台开发

    本文给大家详细介绍了如何使用.NET Core进行跨平台开发,包含简单的环境架设以及配置,以及使用vs进行编译运行项目和注意事项,有需要的小伙伴可以参考下
    2016-07-07
  • 使用Aspose.Cells组件生成Excel文件实例

    使用Aspose.Cells组件生成Excel文件实例

    这篇文章主要介绍了使用Aspose.Cells组件生成Excel文件的方法,大家参考使用吧
    2013-11-11

最新评论