JSP:
<%@ page language="java" import="java.util.*" pageEncoding="gbk"%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
<head>
<title>2级联动</title>
<script type="text/javascript">
var xmlHttpRequest = new xmlHttpRequest;
function createXMLHttpRequest() {
if (window.ActiveXObject) {
try{
xmlHttpRequest= new ActiveXObject("Microsoft.XMLHTTP");
}catch(e){
xmlHttpRequest = new ActiveXObject("MsXM12.XMLHTTP");
}
}else if(window.xmlHttpRequest){
return new xmlHttpRequest;
}
}
function sendRequest(shengId){
var url ="${pageContext.request.contextPath}/ListServer?shengId=" +shengId;
if(shengId=0){
clearShi();
return;
}
xmlHttpRequest = createXMLHttpRequest();
xmlHttpRequest.onreadystatechange  =showShi();
xmlHttpRequest.setRequestHeader("If-Modified-Since","0");
xmlHttpRequest.open("get",url,true);
xmlHttpRequest.send(null);
}
function showShi(){
alert("1");
var shi =document.getElementById("shi");
if(xmlHttpRequest.readyState == 4 &&xmlHttpRequest.readyState==200){
var str =xmlHttpRequest.responstText;
var shis=str.spit(",");
for(var i = 0;i<shis.length;i++){
var op = document.createElement("option");
op.text=shis[i];
op.valut=i;
shi.appendChild(op);
}
}
}
function clearShi(){
var shi =document.getElementById('shi');
shi.options.length=0;
shi.options[0] =  new Option("请选择","0");
}
</script>
</head> <body>
<h1>
2级连动
</h1>
省:
<select id='sheng' onchange="sendRequest(this.value)">
<option value="0">
请选择
</option>
<option value="1">
四川
</option>
<option value="2">
西藏
</option>
</select>
省:
<select id='shi'>
<option value="0">
请选择
</option>
</select>
</body>
</html>
Servlet:import java.io.IOException;
import java.io.PrintWriter;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;public class ListServer extends HttpServlet {
public static Map<String, List<String>> map = new HashMap<String, List<String>>(); @Override
public void init() throws ServletException {
List<String> list = new ArrayList<String>();
list.add("成都");
list.add("自贡");
list.add("内江");
map.put("1", list);
list = new ArrayList<String>();
list.add("拉萨");
list.add("林芝");
map.put("2", list);
} public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
String shengId = request.getParameter("shengId");
List<String> list = map.get(shengId);
StringBuffer sb = new StringBuffer();
if (list != null) {
for (String s : list) {
sb.append(s).append(",");
}
if (!list.isEmpty()) {
sb.deleteCharAt(sb.length() - 1);
}
}
request.setCharacterEncoding("gbk");
response.setContentType("text/html;charset=gbk");
PrintWriter out = response.getWriter();
out.println(sb.toString());
} public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request, response); }}
XML:
<?xml version="1.0" encoding="UTF-8"?>
<web-app version="3.0" 
xmlns="http://java.sun.com/xml/ns/javaee" 
xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" 
xsi:schemaLocation="http://java.sun.com/xml/ns/javaee 
http://java.sun.com/xml/ns/javaee/web-app_3_0.xsd">
  <display-name></display-name>
  <servlet>
    <servlet-name>ListServer</servlet-name>
    <servlet-class>ListServer</servlet-class>
  </servlet>  <servlet-mapping>
    <servlet-name>ListServer</servlet-name>
    <url-pattern>/ListServer</url-pattern>
  </servlet-mapping>
  <welcome-file-list>
    <welcome-file>index.jsp</welcome-file>
  </welcome-file-list>
</web-app>

解决方案 »

  1.   

    好久都没看到过 xmlHttpRequest 这个对象了。建议你用一些js框架。比较好。比如jquery~
      

  2.   

    xmlHttpRequest.onreadystatechange =showShi(); 这个没有括号、、
    没取出来。  这么长看看就没耐心了。。
      

  3.   

    你的代码是这样子的:
    xmlHttpRequest = createXMLHttpRequest();
    xmlHttpRequest.onreadystatechange =showShi();
    xmlHttpRequest.setRequestHeader("If-Modified-Since","0");
    xmlHttpRequest.open("get",url,true);
    xmlHttpRequest.send(null);首先呢,你实例化xmlHttpRequest之后 ,请求都没有发送,就调用回调函数了,你说怎么可能会有数据返回??所以 把 xmlHttpRequest.onreadystatechange =showShi();
     放到最下面就可以了~~~加油~~