AJAX示例应用-2(两级菜单的联动)-方式1(服务器以字符串形式返回子类别的id,name)

1.第一级菜单是取出我的网上商城商品类别的根类别,第二级菜单则是取出该类别下的子类别,首先附上得到根类别的源码以及菜单源码:

 

<%
            List
< Category >  categories  =  Category.getCategories();
            List
< Category >  topCategories  =   new  ArrayList < Category > ();
            
for ( int  i = 0 ; i < categories.size(); i ++ {
                Category c 
= categories.get(i);
                
if(c.getGrade() == 1//根类别的garde=1) {
                    topCategories.add(c);
                }

            }
            
%>

 

< SELECT  class =wenbenkuang  name =category1  onchange ="changeCategory()" >
         
< OPTION  value =0  selected > 查询一级目录 </ OPTION >
               
<%
                            
for(int i=0; i<topCategories.size(); i++) {
                                    Category c 
= topCategories.get(i);
                    
%>
                                                    
         
< OPTION  value =<%=c.getId()% > > <% = c.getName() %> </ OPTION >
      
<%     
                             }
          
%>
</ SELECT >
                                                                              
 
< SELECT  class =wenbenkuang  name =category2 >
       
< OPTION  value =0  selected > 查询二级目录 </ OPTION >
 
</ SELECT >

 

2.javascript代码:

 

 

< script type = " text/javascript " >
                        
var  req;
                        
function  changeCategory() ... {
                            
var id = document.form2.category1.options[document.form2.category1.selectedIndex];
                            
                            
var url = "getsecondcategories_1.jsp?id=" + escape(id.value);
                            
                            
if(window.XMLHttpRequest) ...{
                                req 
= new XMLHttpRequest();
                            }
 else if (window.ActiveXObject) ...{
                                req 
= new ActiveXObject("Microsoft.XMLHTTP");
                            }

                            req.open(
"GET", url, true);
                            req.onreadystatechange 
= callback;
                            req.send(
null);
                        }

                    
                        
function  callback() ... {
                            
if(req.readyState == 4) ...{
                                
if(req.status == 200) ...{
                                    parse(req.responseText);
                                  }

                            }

                        }

                        
                        
function  parse(msg) ... {
                            msg 
= msg.replace(/(^s*)|(s*$)/g, "");  //重要!去除空格,换行等字符
                            if(msg == null || new String(msg) == "") ...{
                                document.form2.category2.length 
= 1;
                                document.form2.category2.selectedIndex 
= 0;
                                document.form2.category2.options[
0].text = '二级子目录';
                                document.form2.category2.options[
0].value = '-1';
                                   
return;
                            }

                            
var categories = msg.split(";");
                            document.form2.category2.length 
= categories.length + 1;
                            document.form2.category2.selectedIndex 
= 0;
                            document.form2.category2.options[
0].value = '-1';
                               document.form2.category2.options[
0].text = '二级子目录';
                            
for(var i=0; i<categories.length; i++) ...{
                                
var categoryproperty = categories[i].split(",")
                                
var id = categoryproperty[0];
                                
var name = categoryproperty[1];
                                document.form2.category2.options[i
+1].value = id;
                                   document.form2.category2.options[i
+1].text = name;
                            }

                        }

</ script >

 

3.getsecondcategories_1.jsp(取出子类别,其中以 id号,类别名称; 的方式返回):

 

<% @ page language="java" import="java.util.*" pageEncoding="GB18030" %>
<% @ page import="com.ycringfinger.shopping.*"  %>
<%

    response.setContentType(
"text/xml");
    response.setHeader(
"Cache-Control""no-store");
    response.setHeader(
"Pragma""no-cache");
    response.setDateHeader(
"Expires"0);
    request.setCharacterEncoding(
"GB18030");

    
int id = Integer.parseInt(request.getParameter("id"));
    Category c 
= Category.loadById(id);
    List
<Category> childs = c.getChilds();
    
    
if(childs.size() == 0) {
        response.getWriter().write(
"");
    } 
else {
        StringBuffer buf 
= new StringBuffer();
        
for(int i=0; i<childs.size(); i++) {
            Category category 
= childs.get(i);
            buf.append(category.getId() 
+ "," + category.getName() + ";");
        }
        buf.deleteCharAt(buf.length() 
- 1); // delete the last ";"
        response.getWriter().write(buf.toString());    
    }
%>
  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值