ajax+servlet实现二级联动(以省份与城市为例)(转)

1.实现思路:

    在下拉列表框中编写js函数触发onchange事件,在这js函数中将选中的name值通过ajax传给后台servlet,在servlet中通过request.getParameter("name")获得选中的name,调用后台的方法得到相应的城市列表(此例没有数据库)。然后如果查到响应的城市的话将其列表组成一个用"#"号分割的字符串str,将其放到response的Writer中。然后在回调函数中接受应答字符串str,调用split("#")方法得到相应的城市数组,然后取得index.jsp的下拉列表框ID,将相应的城市用循环动态的加入到城市列表框中。

2.具体例子

(1)index.jsp

 

  1. <%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>  
  2. <%  
  3.     String path = request.getContextPath();  
  4. %>  
  5. "-//W3C//DTD HTML 4.01 Transitional//EN">  
  6.   
  7.       
  8.         以城市与省份为例,用ajax实现二级联动  
  9.       
  10.     "text/javascript">  
  11.       
  12.         
      
  13.             选择省份:  
  14.             "provinceid" οnchange="getCity()">  
  15.                 "none">  
  16.                     请选择  
  17.                   
  18.                 "guangdong">  
  19.                     广东  
  20.                   
  21.                 "ningxia">  
  22.                     宁夏  
  23.                   
  24.               
  25.             城市:  
  26.             "cityid">  
  27.                 "none">  
  28.                     没有数据  
  29.                   
  30.               
  31.           
  32.       
  33.   

 

(2)GetCity.java

 

  1. import java.io.IOException;  
  2. import java.io.PrintWriter;  
  3. import javax.servlet.ServletException;  
  4. import javax.servlet.http.HttpServlet;  
  5. import javax.servlet.http.HttpServletRequest;  
  6. import javax.servlet.http.HttpServletResponse;  
  7.   
  8. public class GetCity extends HttpServlet {  
  9.     public void doGet(HttpServletRequest request, HttpServletResponse response)  
  10.             throws ServletException, IOException {  
  11.         response.reset();  
  12.         String name=request.getParameter("provinceName")==null?"":request.getParameter("provinceName");  
  13.         System.out.print(name);  
  14.         String str="";  
  15.         if(name.trim().equals("guangdong")){  
  16.             str="广州#深圳#东莞#中山#珠海#惠东";  
  17.         }else if(name.trim().equals("ningxia")){  
  18.             str="银川#吴忠#中卫#中宁#固原";  
  19.         }else{  
  20.             str="没有数据";  
  21.         }  
  22.         response.setContentType("text/html");  
  23.         response.setCharacterEncoding("utf-8");  
  24.         response.getWriter().write(str);  
  25.         response.getWriter().flush();  
  26.     }  
  27.     public void doPost(HttpServletRequest request, HttpServletResponse response)  
  28.             throws ServletException, IOException {  
  29.         doGet(request,response);  
  30.     }  
  31. }  

 

(3)web.xml

 

 

  1. "1.0" encoding="UTF-8"?>  
  2. "2.5"   
  3.     xmlns="http://java.sun.com/xml/ns/javaee"   
  4.     xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"   
  5.     xsi:schemaLocation="http://java.sun.com/xml/ns/javaee   
  6.     http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd">  
  7.     
  8.     This is the description of my J2EE component  
  9.     This is the display name of my J2EE component  
  10.     GetCity  
  11.     class>GetCityclass>  
  12.     
  13.     
  14.     GetCity  
  15.     /GetCity  
  16.     
  17.     
  18.     index.jsp  
  19.     
  20.   

你可能感兴趣的:(ajax)