asp.net 과 ajax 스마트 검색 기능 코드 구현

첫 번 째 단 계 는 검색 페이지
 
<%@ 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}
}
마지막 에 실현 한 효 과 는 다음 과 같다.

좋은 웹페이지 즐겨찾기