ASP+AJAX做类似google的搜索提示

时间:2008-10-24 13:49:00 


主要要文件有:

Index.html 实现功能,一个文本框,输入内容并实现提示

 search.asp 查询功能,让文本框输入的内容在数据库中查询,然后返回给客户端

conn.asp 数据库连接功能,实现与数据库相连 xmlhttp.js AJAX 核心部分,用来把客户端的数据传给服务端,再把服务端的数据返还给客户端.

style.css 样式文件,主要是对google提示框查询到的内容进行样式化处理

先看第一个文件style.css


[code=css]
 @charset "utf-8";
/* CSS Document */

body
{
font-size:12px;
font-family:Arial, Helvetica, sans-serif;
}

#search_suggest
{
position:absolute;
background:#FFFFFF;
text-align:left;
border:1px #000000 solid;
}

.suggest_link_over
{
background-color:#e8f2fe;
padding:2px 6px;
}

.suggest_link
{
padding:2px 6px;
background-color:#FFFFFF;
}

.none
{
display:none;


第二个文件: xmlhttp.js 


// JavaScript Documentrt
var xmlHttp = createXmlHttpRequest();

function createXmlHttpRequest()
{
var xmlhttp = null;
try
{
xmlhttp = XMLHttpRequest();
}
catch(e1)
{
try
{
xmlhttp = new ActiveXObject("MSXML2.XMLHTTP");
}
catch(e2)
{
try
{
xmlhttp = new ActiveXObject("Microsoft.XMLHTTP");
}
catch(e3)
{
xmlhttp = false;
alert("创建失败!");
}
}
}

return xmlhttp;
}

function change_key()
{
if (xmlHttp.readyState == 4 || xmlHttp.readyState == 0)
{
var str = document.getElementById("txt_key").value;

xmlHttp.open("get","search.asp?key=" + str ,true);
xmlHttp.onreadystatechange = handSearchRequest; 
xmlHttp.send(null);
}
}

function handSearchRequest()
{
if (xmlHttp.readyState == 4)
{
var div = document.getElementById("search_suggest");
div.innerHTML = "";
var str = xmlHttp.responseText.split("|");

for (var i=0; i<str.length; i++)
{
var suggest = &rsquo;<div onmouseover="javascript:suggestOver(this);" &rsquo;;
suggest += &rsquo;onmouseout="javascript:suggestOut(this);" &rsquo;;
suggest += &rsquo;onclick="javascript:setSearch(this.innerHTML);" &rsquo;;
suggest += &rsquo;class="suggest_link">&rsquo; + str[i] + &rsquo;</div>&rsquo;;
div.innerHTML += suggest;
}
}
}

function setSearch(div_value)
{
document.getElementById("txt_key").value = div_value;
document.getElementById("search_suggest").className = &rsquo;none&rsquo;;
}
function suggestOver(div_value)
{
div_value.className = &rsquo;suggest_link_over&rsquo;;
}

function suggestOut(div_value)
{
div_value.className = &rsquo;suggest_link&rsquo;;


第三个文件:conn.asp


<%
set conn = Server.CreateObject("Adodb.Connection")
connStr = "Provider=SQLOLEDB;Server=.\SQLEXPRESS;UID=sa;PWD=sa;Initial catalog=test;"
conn.ConnectionString = connStr
conn.open
%> 


第四个文件:search.asp


<%@LANGUAGE="VBSCRIPT" CODEPAGE="65001"%>
<!-- #include file="conn.asp" -->
<%
key = request.QueryString("key")

if (key <> "") then
key = replace(key,"\","")
key = replace(key,"&rsquo;","")
key = replace(key,"or","") 
sel_sql = "select [key] from [key] where [key] like &rsquo;" & key & "%&rsquo;"
dim keyword
keyword = ""

set rs = conn.execute (sel_sql)
do while not rs.eof
keyword = keyword & rs(0) & "|"
rs.movenext
loop

response.Write(keyword)
end if
%> 


最后一个结果文件:index.html 


<!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>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>google提示  </title>
<script src="xmlhttp.js" ></script>
<link rel="stylesheet" type="text/css" href="style.css">
</head>

<body>
<form id="form1" name="form1" method="post" action="">
<input name="txt_key" type="text" id="textarea" autocomplete="off" onkeyup="change_key()"/><br/>
<div id="search_suggest" ></div>
</form>
</body>
</html>


标签:
0
投稿

猜你喜欢

  • 详解如何在cmd命令窗口中搭建简单的python开发环境

    2021-08-21 08:03:08
  • 在Python的Flask框架下使用sqlalchemy库的简单教程

    2021-02-23 23:58:40
  • MySQL中in和exists区别详解

    2024-01-19 20:55:10
  • javascript学习随笔(编写浏览器脚本 Navigator Scripting )

    2024-04-28 09:49:39
  • Get方法和Post方法的区别深入理解

    2023-12-09 11:42:18
  • 分析Mysql大量数据导入遇到的问题以及解决方案

    2024-01-23 19:10:08
  • pandas 按照特定顺序输出的实现代码

    2023-02-04 19:35:17
  • Python Pandas高级教程之时间处理

    2021-08-12 14:04:49
  • 一文搞懂SQL注入攻击

    2024-01-17 05:50:11
  • Python编程给numpy矩阵添加一列方法示例

    2023-08-29 07:22:30
  • Python读取hdf文件并转化为tiff格式输出

    2021-02-22 18:59:56
  • vue.js 动态组件详解

    2024-04-29 13:09:58
  • 简单form标准化实例——整体布局

    2007-05-11 17:04:00
  • 详解Django中CSRF和CORS的区别

    2021-02-19 19:16:51
  • 当达到输入长度时表单自动切换焦点

    2024-05-02 17:29:33
  • MySQL慢查询日志的配置与使用教程

    2024-01-16 08:57:21
  • 为什么相对PHP黑python的更少

    2024-05-21 10:20:51
  • mybatis plus generator 根据数据库自动生成实体类的实现示例

    2024-01-25 11:48:00
  • MDB格式网站文件如何解压

    2008-07-02 12:48:00
  • JavaScript实现解析INI文件内容的方法

    2024-04-25 13:10:23
  • asp之家 网络编程 m.aspxhome.com