基于asp+ajax和数据库驱动的二级联动菜单


Posted in PHP onMay 06, 2010

index.asp 页面代码

<!--#include file="conn.asp" --> 
<% 
set cmd = conn.execute("select bigclassid,bigclassname from bigclass") 
tempid=cmd("bigclassid") 
%> 
<select name="menu" onChange="getsubcategory(this.value);"> <% 
if not cmd.eof then 
do while not cmd.eof 
bigclassid= cmd("bigclassid") 
bigclassname = cmd("bigclassname") 
%> 
<option value="<%=bigclassid%>"><%=bigclassname%></option> 
<% 
cmd.movenext 
loop 
end if 
cmd.close 
set cmd = nothing 
%> 
</select> 
<div id="subclass"> 
<select name="submenu"> 
<% 
set cxd = conn.execute("select * from smallclass where bigclassid=" & tempid) 
if not cxd.eof then 
do while not cxd.eof 
smallclassid= cxd("smallclassid") 
smallclassname = cxd("smallclassname")%> 
<option value="<%=smallclassid%>"><%=smallclassname%></option> 
<% 
cxd.movenext 
loop 
cxd.close 
set cxd = nothing 
else 
html = "<select name='smallclassid'><option value='0' selected>暂无小类</option></select>" 
response.write html 
end if 
%> 
</select> 
</div>

ajax.js 代码
// JavaScript Document 
function createxmlhttp() 
{ 
xmlhttpobj = false; 
try{ 
xmlhttpobj = new XMLHttpRequest; 
}catch(e){ 
try{ 
xmlhttpobj=new ActiveXObject("MSXML2.XMLHTTP"); 
}catch(e2){ 
try{ 
xmlhttpobj=new ActiveXObject("Microsoft.XMLHTTP"); 
}catch(e3){ 
xmlhttpobj = false; 
} 
} 
} 
return xmlhttpobj; 
} function getsubcategory(bigclassid){ 
if(bigclassid==0){ 
document.getElementById("subclass").innerHTML="<select name='smallclassid'><option value='0' selected>选择二级分类</option></select>"; 
return; 
}; 
var xmlhttpobj = createxmlhttp(); 
if(xmlhttpobj){//如果创建对象xmlhttpobj成功 
xmlhttpobj.onreadystatechange=handle; 
xmlhttpobj.open('get',"getsubcategory.asp?bigclassid="+bigclassid+"&number="+Math.random(),true);//get方法 加个随机数。 

xmlhttpobj.send(null); 
} 
} 
function handle(){//客户端监控函数 
//if(xmlhttpobj.readystate==4){//服务器处理请求完成 
if(xmlhttpobj.status==200){ 
//alert('ok'); 
var html = xmlhttpobj.responseText;//获得返回值 
document.getElementById("subclass").innerHTML=html; 
}else{ 
document.getElementById("subclass").innerHTML="对不起,您请求的页面有问题..."; 
} 
//} 
//else{ 
//document.getElementById("subclass").innerHTML=xmlhttpobj.readystate;//服务器处理中 
//} 
//} 
}

getsubcategory.asp 代码
<%@language="vbscript" codepage="936"%> 
<!--#include file="conn.asp"--> 
<% 
response.charset="gb2312" 
bigclassid=safe(request.querystring("bigclassid")) 
if bigclassid<>"" then 
set re=new regexp 
re.ignorecase=true 
re.global=false 
re.pattern = "^[0-9]{1,3}$" 
if not re.test(bigclassid) then 
response.write "非法参数" 
response.end 
end if%> <%on error resume next 
set p = conn.execute("select * from smallclass where bigclassid=" & bigclassid) 
if err then 
err.clear 
response.write "查询出错" 
response.end 
end if 
if not p.eof then 
html = "<select name='select2'>"&vbnewline 
do while not p.eof 
html = html&"<option value='"&p("smallclassid")&"'>"&p("smallclassname")&"</option>"&vbnewline 
p.movenext 
loop 
html = html&"</select>" 
else 
html = "<select name='smallclassid'><option value='0' selected>暂无小类</option></select>" 
end if 
p.close 
set p = nothing 
conn.close 
set conn = nothing 
response.write html 
html = "" 
end if 
%>
PHP 相关文章推荐
实现分十页分向前十页向后十页的处理
Oct 09 PHP
php后台程序与Javascript的两种交互方式
Oct 25 PHP
php tp验证表单与自动填充函数代码
Feb 22 PHP
解析PHP提交后跳转
Jun 23 PHP
php 字符串中的\n换行符无效、不能换行的解决方法
Apr 02 PHP
ThinkPHP文件缓存类代码分享
Apr 22 PHP
详解PHP数组赋值方法
Nov 07 PHP
php截取视频指定帧为图片
May 16 PHP
php 实现一个字符串加密解密的函数实例代码
Nov 01 PHP
详解PHP用substr函数截取字符串中的某部分
Dec 03 PHP
laravel + vue实现的数据统计绘图(今天、7天、30天数据)
Jul 31 PHP
基于PHP实现用户在线状态检测
Nov 10 PHP
PHP 类商品秒杀计时实现代码
May 05 #PHP
PHP 面向对象 final类与final方法
May 05 #PHP
PHP 面向对象 PHP5 中的常量
May 05 #PHP
在Windows下编译适用于PHP 5.2.12及5.2.13的eAccelerator.dll(附下载)
May 04 #PHP
一些被忽视的PHP函数(简单整理)
Apr 30 #PHP
php 将字符串按大写字母分隔成字符串数组
Apr 30 #PHP
mayfish 数据入库验证代码
Apr 30 #PHP
You might like
php实现图片转换成ASCII码的方法
2015/04/03 PHP
jQuery 标题的自动翻转实现代码
2009/10/14 Javascript
初窥JQuery(二)事件机制(2)
2010/12/06 Javascript
JS Map 和 List 的简单实现代码
2013/07/08 Javascript
分享2个jQuery插件--jquery.fileupload与artdialog
2014/12/26 Javascript
jQuery实现的网页左侧在线客服效果代码
2015/10/23 Javascript
JavaScript中的时间处理小结
2016/02/24 Javascript
Angularjs中UI Router的使用方法
2016/05/14 Javascript
简单实现JS计算器功能
2016/12/21 Javascript
微信小程序商品详情页的底部弹出框效果
2020/11/16 Javascript
vue addRoutes实现动态权限路由菜单的示例
2018/05/15 Javascript
nodejs图片处理工具gm用法小结
2018/12/12 NodeJs
微信公众号平台接口开发 获取access_token过程解析
2019/08/14 Javascript
Vue 实现一个命令式弹窗组件功能
2019/09/25 Javascript
在vue中created、mounted等方法使用小结
2020/07/21 Javascript
[05:29]2014DOTA2国际邀请赛 赛后专访:LGDNewbee顺利过关
2014/07/13 DOTA
python字符串连接的N种方式总结
2014/09/17 Python
分享一下如何编写高效且优雅的 Python 代码
2017/09/07 Python
pytorch 数据集图片显示方法
2018/07/26 Python
Python函数返回不定数量的值方法
2019/01/22 Python
python银行系统实现源码
2019/10/25 Python
python实现飞机大战小游戏
2019/11/08 Python
python自动化测试之异常及日志操作实例分析
2019/11/09 Python
django form和field具体方法和属性说明
2020/07/09 Python
Python下划线5种含义代码实例解析
2020/07/10 Python
Python 捕获代码中所有异常的方法
2020/08/03 Python
详解向scrapy中的spider传递参数的几种方法(2种)
2020/09/28 Python
Html5+JS实现手机摇一摇功能
2015/04/24 HTML / CSS
单身旅行者的单身假期:Just You
2018/04/08 全球购物
运行时异常与一般异常有何异同?
2014/01/05 面试题
喷漆工的岗位职责
2014/03/17 职场文书
社区党的群众路线教育实践活动总结材料
2014/10/31 职场文书
消防隐患整改通知书
2015/04/22 职场文书
欧也妮葛朗台读书笔记
2015/06/30 职场文书
《天使的翅膀》读后感3篇
2019/12/20 职场文书
如何用Node.js编写内存效率高的应用程序
2021/04/30 Javascript