Ajax小实例--级联菜单



        当菜单选项包含很多子选项项时,我们不可能把所有的菜单选项放到网页变量中,那么在网页加载时必须要加载全部数据才可以完成,浪费时间影响性能,特别是在子菜单的下一级菜单又存在相当多是数量的菜单选项。

          利用Ajax异步请求数据将是比较好的一个解决方法:

Ajaxmenu.html

<html>
<head>
<META http-equiv=Content-Type content="text/html; charset=gb2312">
<LINK href="images/css.css" type=text/css rel=stylesheet>
<script language="javascript">
var XMLHttpReq;
    var currentSort;
     //创建XMLHttpRequest对象      
    function createXMLHttpRequest() {
        if(window.XMLHttpRequest) { //Mozilla 浏览器
            XMLHttpReq = new XMLHttpRequest();
        }
        else if (window.ActiveXObject) { // IE浏览器
            try {
                XMLHttpReq = new ActiveXObject("Msxml2.XMLHTTP");
            } catch (e) {
                try {
                    XMLHttpReq = new ActiveXObject("Microsoft.XMLHTTP");
                } catch (e) {}
            }
        }
    }
    //发送请求函数
    function sendRequest(url) {
        createXMLHttpRequest();
        XMLHttpReq.open("GET", url, true);
        XMLHttpReq.onreadystatechange = processResponse;//指定响应函数
        XMLHttpReq.send(null);  // 发送请求
    }
    // 处理返回信息函数
    function processResponse() {
        if (XMLHttpReq.readyState == 4) { // 判断对象状态
            if (XMLHttpReq.status == 200) { // 信息已经成功返回,开始处理信息
                updateMenu();
            } else { //页面不正常
                  alert("您所请求的页面有异常。");
            }
        }
    }
    //更新菜单函数
    function updateMenu() {
        var res=XMLHttpReq.responseXML.getElementsByTagName("res");
        var subMenu = "";
        for(var i = 0; i < res.length; i++) {
            subMenu = subMenu + "  " + res[i].lastChild.data;
        }
        currentSort.innerHTML = subMenu;
    }
    // 创建级联菜单函数
    function showSubMenu(obj) {
        currentSort = document.getElementById(obj);
        currentSort.parentNode.style.display = "";
        sendRequest("menu02.jsp?sort=" + obj);
    }

</script>

</head>
<body>
<table style="BORDER-COLLAPSE: collapse" borderColor=#111111
cellSpacing=0 cellPadding=0 width=200 bgColor=#f5efe7 border="1">

<TR>
  <TD align=middle bgColor=#dbc2b0 height=19><B>指标操作</B> </TD>
</TR>
<tr>
  <td height="20"> <a onClick="showSubMenu('A')">一级指标A</a> </td>
</tr>
<tr style="display:none">
   <td height="20" id="A"> </td>
</tr>
<tr>
  <td height="20"> <a onClick="showSubMenu('B')">一级指标B</a> </td>
</tr>
<tr style="display:none ">
  <td height="20"  id="B"> </td>
</tr>
</table>
</body>
</html>

 

简单的响应的jsp页面:

<%@ page contentType="text/html; charset=GBK" %>
<%
//接收浏览器端提交的信息
String sort=request.getParameter("sort");
  String contents1="";
  String contents2="";
 if(sort.equals("A")){
  contents1="一级指标AA";
  contents2="一级指标AB";
  }else if(sort.equals("B")){
  contents1="二级指标BA";
  contents2="二级指标BB";
  }
  //传回响应数据
  response.setContentType("text/xml; charset=UTF-8");
  response.setHeader("Cache-Control", "no-cache");
  out.println("<response>");
  out.println("<res>" + contents1 + "</res>");
  out.println("<res>" + contents2 + "</res>");
  out.println("</response>");
  out.close(); 
 %>



部署到Tomcat环境  OK!




  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值