服务器之家:专注于服务器技术及软件下载分享
分类导航

PHP教程|ASP.NET教程|JAVA教程|ASP教程|

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

2019-07-15 10:01服务器之家 ASP.NET教程

近来一直在开发股票模拟系统,终于告一段落了,回想起来感慨很多。突然想应该做点总结了,想来想去还是觉得通过写点日志来把相关的知识点记录下来,下面就我在项目中经常用到的动态提示搜索选项功能的实现。

第一步,先做好搜索页面 
复制代码代码如下:

<%@ 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} 

最后实现的效果如下: 
asp.net和ajax实现智能搜索功能代码

延伸 · 阅读

精彩推荐