六狼论坛

 找回密码
 立即注册

QQ登录

只需一步,快速开始

新浪微博账号登陆

只需一步,快速开始

搜索
查看: 63|回复: 0

菜单联动的实现二(使用AJAX技术)

[复制链接]

升级  20%

20

主题

20

主题

20

主题

秀才

Rank: 2

积分
80
 楼主| 发表于 2013-1-29 11:46:39 | 显示全部楼层 |阅读模式
1、编写表单
       
<form name="frm" method="get">  <select name="parent" onchange="changeDrop2()">   <option value="-1">请选择</option>   <%   for(int i=0; i<categories.size(); i++) {    Category c = categories.get(i);        %>    <option value="<%=c.getId() %>"><%=c.getName() %></option>    <%    }   %>  </select>  <select name="child">   <option value="-1">Child Not Selected!</option>  </select> </form> 2、用AJAX实现changeDrop2方法
      
<script type="text/javascript">  var req;    function init() {   if(window.XMLHttpRequest) {    req = new XMLHttpRequest();   } else if (window.ActiveXObject) {    req = new ActiveXObject("Microsoft.XMLHTTP");   }  }    function changeDrop2() {   init();   var url = "GetCategoryChilds.jsp?id=" + escape(document.frm.parent.options[document.frm.parent.selectedIndex].value);   req.open("GET", url, true);   req.onreadystatechange = callback;   req.send(null);  }    function callback() {   if(4 == req.readyState) {           if(200 == req.status) {     alert(req.responseText);     eval(req.responseText);//执行服务器返回的javascript动态脚本    }   }     } </script> 3、用javascript编写动态脚本
       
<%int id = Integer.parseInt(request.getParameter("id"));List<Category> childs = CategoryService.getInstance().getChilds(id) ;StringBuffer buf = new StringBuffer();buf.append("document.frm.child.length = " + (childs.size()+1) + ";\n");buf.append("document.frm.child.options[0].value = '-1';\n");buf.append("document.frm.child.options[0].text = 'Pls Select!';\n");buf.append("document.frm.child.selectedIndex = 0;\n");for(int i=0; i<childs.size(); i++) {Category c = childs.get(i);buf.append("document.frm.child.options[" + (i+1) + "].value = '" + c.getId() + "';\n");buf.append("document.frm.child.options[" + (i+1) + "].text = '" + c.getName() + "';\n");}response.setContentType("text/html;charset=gbk");response.setHeader("Cache-Control", "no-store"); //HTTP1.1response.setHeader("Pragma", "no-cache"); //HTTP1.0response.setDateHeader("Expires", 0); //prevents catching at proxy serverresponse.getWriter().write(buf.toString());%> 
您需要登录后才可以回帖 登录 | 立即注册 新浪微博账号登陆

本版积分规则

快速回复 返回顶部 返回列表