• 欢迎访问搞代码网站,推荐使用最新版火狐浏览器和Chrome浏览器访问本网站!
  • 如果您觉得本站非常有看点,那么赶紧使用Ctrl+D 收藏搞代码吧

琥珀无限级分类联动菜单AJAX版_jquery

jquery 搞代码 7年前 (2018-06-12) 136次浏览 已收录 0个评论

我做好琥珀无限级分类联动菜单JavaScript版后,在蓝色理想和CSDN上发表了一下,梅花雪兄在CSDN上提出了效率不足的问题,我也认识到了这一点,本打算项目完工后再进行完善,但一时技痒,便在网上寻找了一下资料,最后做出了此AJAX版无限级分类联动菜单。因时间匆忙,做得比较粗糙,但已利用AJAX技术,实现无限级联动,待过一段时间再完善此版本。
希望能给大家提供一些帮助,有好的建议或bug可在此帖后回复或浏览http://www.51ajax.com/bbs/发帖。
运行环境:MS IE 6.0 FireFox 1.0.1
下载地址:请点击这里
在线Demo:请点击这里
Bug 反馈:请点击这里
最后更新:2005-10-20 16:18
共有两个文件:
文件ajax.html代码如下:
HTML代码:<html>
  <head>
    <meta http-equiv=”Content-Type” content=”text/html; charset=gb2312″>
    <meta content=”琥珀[hopesoft],http://www.10090.com&#8221; name=”author”>
    <title>琥珀网 – 无限级联动菜单[AJAX版]</title>
    <style type=”text/css“>
    body, td
    {
      font-family: 宋体;
      font-size: 12px;
    }
    </style>
<script language=”javaScript”>
function GetResult(str,classid)
{
/*
*————— GetResult(str,classid) —————–
* GetResult(str) 
* 功能:通过XMLHTTP发送请求,返回结果.
* 参数:str,字符串,发送条件;classid,数字,菜单级别
* 实例:GetResult(document.all.userid.value,1);
*————— GetResult(str,classid) —————–
*/
//定义菜单级数,菜单ID数组,菜单对应字段数组
var MenuIdArr,MenuFieldArr,MenuClass
MenuIdArr= new Array()
MenuFieldArr=new Array()
MenuClass=4

MenuIdArr[1]=”sel1″
MenuIdArr[2]=”sel2″
MenuIdArr[3]=”sel3″
MenuIdArr[4]=”sel4″

MenuFieldArr[1]=”name”
MenuFieldArr[2]=”name”
MenuFieldArr[3]=”name”
MenuFieldArr[4]=”name”

if (window.XMLHttpRequest) { // Mozilla, Safari, …
    http_request = new XMLHttpRequest();
} else if (window.ActiveXObject) { // IE
    http_request = new ActiveXObject(“Microsoft.XMLHTTP”);
}

var linkurl=”http://www.10090.com/demo/hpmenu/ajax_server.asp?classid=”+classid+”&sel=”+str+”&fieldname=”+MenuFieldArr%5Bclassid+1%5D
http_request.open(“GET”,linkurl,false);
http_request.send(null);

//服务器端处理返回的是经过escape编码的字符串.
//在页面显示服务器查询结果

var returntxt=unescape(http_request.responseText)
if(returntxt.length>0)
{document.all,ajax.innerHTML=”服务器返回结果:<font color=’red’>”+returntxt+”</font>   [Powered by AJAX]”}
else
{document.all,ajax.innerHTML=””}

//通过XMLHTTP返回数据,开始构建Select.
BuildSel(returntxt,eval(“document.all.”+MenuIdArr[classid+1]))
//============更改下下级以下菜单为空==============
var kkk
for(kkk=classid+2;kkk<=MenuClass;kkk++)
    {        
    submenu=eval(“document.all.”+MenuIdArr[kkk])    
    submenu.length=1
    submenu.options[0].selected=true
    }
}

function BuildSel(str,sel)
{
/*
*————— BuildSel(str,sel) —————–
* BuildSel(str,sel) 
* 功能:通过str构建Select.
* 参数:str,字符串,由服务端返回的.有特定结构”字符串1|,字符串2,字符串3″
*          也可为”字符串1序号|字符串1文本,字符串2序号|字符串2文本,字符串3序号|字符串3文本”,如本例
* 参数:sel,要构建的Select
* 实例:BuildSel(unescape(oBao.responseText),document.all.sel2)
*————— BuildSel(str,sel) —————–
*/
//先清空原来的数据.
sel.options.length=0;
var arrstr = new Array();
arrstr = str.split(“,”);
//开始构建新的Select.
sel.options.add(new Option( “—–请选择—–“,””));  
if(str.length>0)   
{
for(var i=0;i<arrstr.length;i++)
{
//分割字符串
var subarrstr=new Array
subarrstr=arrstr[i].split(“|”)
//生成下级菜单
sel.options.add(new Option(subarrstr[1],subarrstr[0])); 
}
sel.options[0].selected=true
}

}
</script>

    <form name=”form1″ method=”post” action=””>
        <table width=”90%” border=”0″ align=”center” cellpadding=”2″ cellspacing=”1″ bgcolor=”#CCCCCC”>
          <tr bgcolor=”F1F1F1″>
            <td height=”24″ colspan=”2″ align=”center”>琥珀无限级联动菜单-AJAX版 [HPMenu_AJAX V1.0]</td>
          </tr>
          <tr bgcolor=”#FFFFFF”>
            <td width=”12%” height=”24″ align=”center”>所 在 洲:</td>
            <td><select name=”sel1″ id=”sel1″ >
               <option value=”” selected>—–请选择—–</option>
              <option value=”10″>亚洲</option>
              <option value=”11″>欧洲</option>
            </select></td>
          </tr>
          <tr bgcolor=”#FFFFFF”>
            <td height=”24″ align=”center”>国  家:</td>
            <td><select name=”sel2″ >
               <option value=”” selected>—–请选择—–</option>
            </select></td>
          </tr>
          <tr bgcolor=”#FFFFFF”>
            <td height=”24″ align=”center”>城  市:</td>
            <td><select name=”sel3″ id=”sel3″ >
               <option value=”” selected>—–请选择—–</option>
            </select></td>
          </tr>
          <tr bgcolor=”#FFFFFF”>
            <td height=”24″ align=”center”>地  区:</td>
            <td><select name=”sel4″ id=”sel4″>
               <option value=”” selected>—–请选择—–</option>
            </select></td>
          </tr>
          <tr bgcolor=”F1F1F1″>
            <td height=”24″ colspan=”2″ align=”center” id=”ajax”> </td>
          </tr>
      </table>
       
 
        <table width=”90%”  border=”0″ align=”center” cellpadding=”0″ cellspacing=”0″>
          <tr>
            <td height=”25″ align=”left”>下载地址:<a href=”http://www.10090.com/demo/hpmenu/HPMenu_ajax.rar&#8221; target=”_blank”>请点击这里</a></td>
          </tr>
          <tr>
            <td height=”25″ align=”left”>在线Demo:<a href=”http://www.10090.com/demo/&#8221; target=”_blank”>请点击这里</a></td>
          </tr>
          <tr>
            <td height=”25″ align=”left”>Bug 反馈:<a href=”http://www.10090.com/bbs/index.asp?boardid=60&#8243; target=”_blank”>请点击这里</a></td>
          </tr>
          <tr>
            <td height=”25″ align=”left”>最后更新:2005-10-20 16:18</td>
          </tr>
          <tr>
            <td height=”25″ align=”left”>联系方式:MSN:[email protected]</td>
          </tr>
          <tr>
            <td height=”50″ align=”center”>copyright(c) 2005 <a href=”http://www.10090.com”>Hopesoft Studio</a> </td>
          </tr>
        </table>
        <script language=”javascript”>
        GetResult(document.getElementById(“sel1”).value,1)        
        </script>
</form>
</body>
</html>

  [Ctrl+A 全部选择 提示:你可先修改部分代码,再按运行]
文件ajax_server.asp代码如下:
HTML代码:<% @Language=”JavaScript” %>
<%
function OpenDB(sdbname)
{
/*
*————— OpenDB(sdbname) —————–
* OpenDB(sdbname) 
* 功能:打开数据库sdbname,返回conn对象.
* 参数:sdbname,字符串,数据库名称.
* 实例:var conn = OpenDB(“database.mdb”);
*————— OpenDB(sdbname) —————–
*/
var connstr = “Provider=Microsoft.Jet.OLEDB.4.0; Data Source=”+Server.MapPath(sdbname);
var conn = Server.CreateObject(“ADODB.Connection”);
conn.Open(connstr);
return conn;
}
var oConn = OpenDB(“ajax_data.mdb”);
var sel = Request(“sel”);
var classid = Request(“classid”)
var fieldname = Request(“fieldname”)
var arrResult = new Array();
//var sql = “select “+fieldname+” from Demo where parentid='”+sel+”‘ and classid=”+classid;
var sql = “select id,”+fieldname+” from Demo where parentid='”+sel+”‘”;
//Response.Write(“alert(“+sql+”)”)
var rs = Server.CreateObject(“ADODB.Recordset”);
rs.Open(sql,oConn,1,1);
while(!rs.EOF)
{
//遍历所有适合的数据放入arrResult数组中.
arrResult[arrResult.length] = rs(0).Value+”|”+rs(1).Value;
rs.MoveNext();
}
//escape解决了XMLHTTP。中文处理的问题.
//数组组合成字符串.由”,”字符串连接.
Response.Write(escape(arrResult.join(“,”)));
%>

  [Ctrl+A 全部选择 提示:你可先修改部分代码,再按运行]
琥珀无限级分类联动菜单AJAX版_jquery
以上两个版本的程序,也是揉合了众多网友的智慧,经我之手呈现出来,互联网的初衷与精髓就在于分享,愿这个小程序能给您带来些许方便。

欢迎大家阅读《琥珀无限级分类联动菜单AJAX版_jquery》,跪求各位点评,若觉得好的话请收藏本文,by 搞代码


搞代码网(gaodaima.com)提供的所有资源部分来自互联网,如果有侵犯您的版权或其他权益,请说明详细缘由并提供版权或权益证明然后发送到邮箱[email protected],我们会在看到邮件的第一时间内为您处理,或直接联系QQ:872152909。本网站采用BY-NC-SA协议进行授权
转载请注明原文链接:琥珀无限级分类联动菜单AJAX版_jquery

喜欢 (0)
[搞代码]
分享 (0)
发表我的评论
取消评论

表情 贴图 加粗 删除线 居中 斜体 签到

Hi,您需要填写昵称和邮箱!

  • 昵称 (必填)
  • 邮箱 (必填)
  • 网址