当前位置:编程学习 > JAVA >>

帮我看看哪里错了。AJAX

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>
--------------------编程问答-------------------- 你返回的市信息没有在下拉框中接收啊? --------------------编程问答-------------------- 好久都没看到过 xmlHttpRequest 这个对象了。。。。

建议你用一些js框架。比较好。比如jquery~ --------------------编程问答-------------------- xmlHttpRequest.onreadystatechange =showShi(); 这个没有括号、、
没取出来。  这么长看看就没耐心了。。
--------------------编程问答--------------------   --------------------编程问答-------------------- 你的代码是这样子的:
xmlHttpRequest = createXMLHttpRequest();
xmlHttpRequest.onreadystatechange =showShi();
xmlHttpRequest.setRequestHeader("If-Modified-Since","0");
xmlHttpRequest.open("get",url,true);
xmlHttpRequest.send(null);

首先呢,你实例化xmlHttpRequest之后 ,请求都没有发送,就调用回调函数了,你说怎么可能会有数据返回??所以 把 xmlHttpRequest.onreadystatechange =showShi();
 放到最下面就可以了~~~加油~~ 
补充:Java ,  Java SE
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,