1、JavaScript
<script type="text/javascript"> var xmlHttp; var result; function createXMLHttpRequest(){ if(window.ActiveXObject){ try{ xmlHttp=new ActiveXObject("Msxml2.XMLHTTP"); }catch(e1){ try{ xmlHttp=new ActiveXObject("Microsoft.XMLHTTP"); }catch(e2){ alert("创建XMLHttpRequest对象失败"); } } }else if(window.XMLHttpRequest){ xmlHttp=new XMLHttpRequest(); } } function updates(){ var selected=document.all.m.value; if(selected==""){ while(document.all.s.options.length>0){ document.all.s.removeChild(document.all.s.childNodes[0]); } var option=document.createElement("option"); var defaults=document.all.defaults.value; option.text=defaults.split(",")[0]; option.value=defaults.split(",")[1]; document.all.s.options.add(option); return; } createXMLHttpRequest(); xmlHttp.onreadystatechange=process; xmlHttp.open("get","testAction.do?m="+selected,true); xmlHttp.send(null); } function process(){ if(xmlHttp.readyState==4){ if(xmlHttp.status==200){ result=xmlHttp.responseText; while(document.all.s.options.length>0){ document.all.s.removeChild(document.all.s.childNodes[0]); } var results=result.split("/"); for(var i=0;i<results.length;i++){ var option=document.createElement("option"); option.text=results[i].split(",")[0]; option.value=results[i].split(",")[1]; document.all.s.options.add(option); } } } } </script>
2、HTML
<select id="m" name="m" onChange="updates()">
<option>
<option value="1">
a
</option>
<option value="2">
b
</option>
<option value="3">
c
</option>
</select>
<select id="s" name="s">
<option value="1">
a
</option>
</select>
<input type="hidden" name="defaults" value="a,1">
3、Action
String s=request.getParameter("m");
response.setContentType("text/html;charset=utf-8");
PrintWriter out=response.getWriter();
StringBuffer sb=new StringBuffer();
if("1".equals(s)){
sb.append("a,");
sb.append("1/");
sb.append("b,");
sb.append("2/");
sb.append("c,");
sb.append("3");
}else if("2".equals(s)){
sb.append("aa,");
sb.append("11/");
sb.append("bb,");
sb.append("22/");
sb.append("cc,");
sb.append("33");
}else if("3".equals(s)){
sb.append("aaa,");
sb.append("111/");
sb.append("bbb,");
sb.append("222/");
sb.append("ccc,");
sb.append("333");
}
out.println(sb.toString());
out.flush();
out.close();
return null;