ajax实现动态级联列表框

本文介绍了一个使用AJAX实现的动态职员选择系统。通过前端JavaScript与后端Java交互,实现根据所选部门动态加载对应职员的功能。
 这是前台的页面的代码:
<html>
  
<head>  
  
</head>
  
<script language="javascript" type="text/javascript">
  
var xmlHttp;
  
function createXMLHttpRequest()
  
{
     
if(window.ActiveXObject)
     
{
        xmlHttp
=new ActiveXObject("Microsoft.XMLHTTP");
     }

     
else if(window.XMLHttpRequest)
     
{
        xmlHttp
=new XMLHttpRequest();
     }

  }

  
  
function select_change()
  
{
     
var depart=document.getElementById("depart").value;
     
if(depart!=null){
          createXMLHttpRequest();
          
var url="deal.jsp?depart="+depart;
          xmlHttp.open(
"GET",url,true);
          xmlHttp.onreadystatechange
=showMember;
          xmlHttp.send(
null);
          }

  }

  
  
function showMember()
  
{
     
if(xmlHttp.readyState==4)
     
{
        
if(xmlHttp.status==200)
        
{
           
var membersData=xmlHttp.responseXML.getElementsByTagName("member");
           
           
var membersSelect=document.getElementById("member");
           
var option=null;
           membersSelect.options.length
=0;
           
           
for(var i=0;i<membersData.length;i++)
           
{
             
var mdisplay=membersData[i].childNodes[0].firstChild.nodeValue;
             
var mvalue=membersData[i].childNodes[1].firstChild.nodeValue;
             
var option=new Option(mvalue,mdisplay);
             
try
             
{
                membersSelect.appendChild(option);
             }

             
catch(e)
             
{
                alert(e);
             }

           }

        }

        
else
        
{
           alert(
"您请求的页面有异常!");
        }

     }

     
else
     
{
     }

  }

  
</script>
  
<body>部门:<select  id="depart" onChange="select_change()">
<option value="null">--请选择--</option>
<option value="d1">部门1</option>
<option value="d2">部门2</option>
<option value="d3">部门3</option>
<option value="d4">部门4</option>
</select>

职员:
<select id="member" multiple="true" width=20></select>

  
</body>
</html>

 

这是后台处理页面的代码:

 

<%@ page language="java" contentType="text/heml;charset=gb2312"%>
<%@ page import="java.util.*"  %>
<%
  String depart
=request.getParameter("depart");
  
if(depart==null) depart="d1";
  StringBuffer sb
=new StringBuffer();
  sb.append(
"<member>");
  
  Map map
=new HashMap();
  String d1
="<member><id>1001</id><name>成员一</name></member><member><id>1002</id><name>成员二</name></member>";
  String d2
="<member><id>1003</id><name>成员三</name></member><member><id>1004</id><name>成员四</name></member>";
  String d3
="<member><id>1005</id><name>成员五</name></member><member><id>1006</id><name>成员六</name></member>";
  String d4
="<member><id>1007</id><name>成员七</name></member><member><id>1008</id><name>成员八</name></member>";
  map.put(
"d1",d1);
  map.put(
"d2",d2);
  map.put(
"d3",d3);
  map.put(
"d4",d4);
  
  sb.append(map.get(depart).toString());
  sb.append(
"</member>");
  response.setContentType(
"text/xml");
  out.write(sb.toString());
%>

 

    该简单的实例是用一个哈希表模拟了服务器端的数据库。将事先定义好的XML数据直接以部门值为主键存入数据

库中,再从客户端接收到部门值时,再查询哈希表取得对应的值,然后封装好后添加到要显示的列表框中;

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值