当前位置:Gxlcms > JavaScript > Ajax怎么实现动态加载组合框(附代码)

Ajax怎么实现动态加载组合框(附代码)

时间:2021-07-01 10:21:17 帮助过:19人阅读

这次给大家带来Ajax怎么实现动态加载组合框(附代码),Ajax实现动态加载组合框的注意事项有哪些,下面就是实战案例,一起来看一下。

一 province.jsp

  1. <%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%>
  2. <html>
  3. <head>
  4. <script type="text/javascript" language="javaScript">
  5. var xmlHttp = false; //全局变量,用于记录XMLHttpRequest对象
  6. function createXMLHttpRequest() {
  7. if(window.ActiveXObject) { //Internet Explorer时,创建XMLHttpRequest对象的方法
  8. try {
  9. xmlHttp = new ActiveXObject("Msxml2.XMLHTTP");
  10. } catch(e) {
  11. try { xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");
  12. //旧版本的Internet Explorer,创建XMLHttpRequest对象
  13. } catch(e) {
  14. window.alert("创建XMLHttpRequest对象错误"+e);
  15. }
  16. }
  17. } else if(window.XMLHttpRequest) { //mozilla时,创建XMLHttpRequest对象的方法
  18. xmlHttp = new XMLHttpRequest();
  19. }
  20. if(!(xmlHttp)) { //未成功创建XMLHttpRequest对象
  21. window.alert("创建XMLHttpRequest对象异常!");
  22. }
  23. }
  24. //下拉列表项改变时的操作
  25. function proChange(objVal) {
  26. createXMLHttpRequest(); //创建XMLHttpRequest对象
  27. document.getElementById("city").length = 1; //根据ID获取指定元素,并赋值
  28. xmlHttp.onreadystatechange = cityList; //指定onreadystatechange处理函数
  29. var url="CityByXMLServlet?province="+objVal; //请求的URL地址
  30. xmlHttp.open("POST",url,true);
  31. xmlHttp.send(null);
  32. }
  33. function cityList() { //onreadystatechange的处理函数
  34. if(xmlHttp.readyState==4) {
  35. if(xmlHttp.status==200) {
  36. parseXML(xmlHttp.responseXML); //解析服务器返回的XML数据
  37. }
  38. }
  39. }
  40. //解析xml信息,以添加地市
  41. function parseXML(xmlDoc) {
  42. var len = xmlDoc.getElementsByTagName("city");
  43. //获取XML数据中所有的“city”元素对象集合
  44. var _citySel = document.getElementById("city"); //根据ID获取页面中的select元素
  45. for(var i=0;i<len.length;i++) { //遍历XML数据并给select元素添加选项
  46. var opt = document.createElement("OPTION"); //创建option对象
  47. opt.text = xmlDoc.getElementsByTagName("city")[i].firstChild.data;
  48. //指定新创建元素的text属性值
  49. opt.value = xmlDoc.getElementsByTagName("city")[i].firstChild.data;
  50. //指定新创建元素的value属性值
  51. _citySel.add(opt); //为select元素添加option
  52. }
  53. }
  54. </script>
  55. <title>动态加载组合框</title>
  56. </head>
  57. <body>
  58. <table align="center" border=1 width="320">
  59. <tr>
  60. <td>省份:</td>
  61. <td>
  62. <select id="province" onChange="proChange(this.value);" style="width:85">
  63. <option value="gd">广东</option>
  64. <option value="gx">广西</option>
  65. <option value="hn">湖南</option>
  66. <option value="hb">湖北</option>
  67. <option value="ah">安徽</option>
  68. </select>
  69. </td>
  70. </tr>
  71. <tr>
  72. <td>城市:</td>
  73. <td>
  74. <select id="city" style="width:85">
  75. <option value="">--请选择--</option>
  76. </select>
  77. </td>
  78. </tr>
  79. </table>
  80. </body>
  81. </html>

二、CityByXMLServlet.java

  1. package servlet;
  2. import java.io.IOException;
  3. import java.io.PrintWriter;
  4. import java.util.*;
  5. import javax.servlet.ServletException;
  6. import javax.servlet.annotation.WebServlet;
  7. import javax.servlet.http.HttpServlet;
  8. import javax.servlet.http.HttpServletRequest;
  9. import javax.servlet.http.HttpServletResponse;
  10. /**
  11. * Servlet implementation class CityByXMLServlet
  12. */
  13. @WebServlet("/CityByXMLServlet")
  14. public class CityByXMLServlet extends HttpServlet {
  15. private static final long serialVersionUID = 1L;
  16. private static final String CONTENT_TYPE = "text/xml; charset=UTF-8";
  17. /**
  18. * @see HttpServlet#HttpServlet()
  19. */
  20. public CityByXMLServlet() {
  21. super();
  22. // TODO Auto-generated constructor stub
  23. }
  24. /**
  25. * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response)
  26. */
  27. public void doGet(HttpServletRequest request, HttpServletResponse response)
  28. throws ServletException, IOException {
  29. response.setContentType(CONTENT_TYPE); //设置服务器响应类型
  30. String province =request.getParameter("province");
  31. StringBuffer city = new StringBuffer("<citys>"); //记录返回XML串的对象
  32. if("gx".equals(province)){
  33. List list=cityInit(); //获取城市列表
  34. for(int i=0;i<list.size();i++){
  35. city.append("<city>"+list.get(i)+"</city>");
  36. }
  37. }else if("hn".equals(province)){
  38. List list = cityInit1(); //获取城市列表
  39. for(int j=0;j<list.size();j++){
  40. city.append("<city>"+list.get(j)+"</city>");
  41. }
  42. }else if("hb".equals(province)){
  43. List list = cityInit2(); //获取城市列表
  44. for(int j=0;j<list.size();j++){
  45. city.append("<city>"+list.get(j)+"</city>");
  46. }
  47. }
  48. city.append("</citys>");
  49. PrintWriter out = response.getWriter();
  50. out.println(city.toString());
  51. out.flush(); //
输出流刷新 out.close(); //关闭输出流 } /* * 初始化城市 */ public List<String> cityInit2() { List<String> cityList = new ArrayList<String>(); //添加城市列表 cityList.add("武汉"); cityList.add("襄阳"); cityList.add("黄冈"); cityList.add("荆门"); cityList.add("十堰"); cityList.add("黄石"); return cityList; } public List<String> cityInit(){ List<String> cityList = new ArrayList<String>(); //添加城市列表 cityList.add("南宁"); cityList.add("桂林"); cityList.add("北海"); cityList.add("河池"); cityList.add("梧州"); cityList.add("玉林"); return cityList; } public List<String> cityInit1() { List<String> cityList = new ArrayList<String>(); //添加城市列表 cityList.add("长沙"); cityList.add("湘潭"); cityList.add("岳阳"); cityList.add("常德"); cityList.add("衡阳"); cityList.add("邵阳"); return cityList; } /** *当前Servelt的初始化方法. <br> * * @throws ServletException发生ServletExceptio时抛出 */ public void init() throws ServletException { } protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); } }

三 web.xml

  1. <?xml version="1.0" encoding="UTF-8"?>
  2. <web-app xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xmlns="http://java.sun.com/xml/ns/j2ee" xmlns:web="http://xmlns.jcp.org/xml/ns/javaee" xsi:schemaLocation="http://java.sun.com/xml/ns/j2ee http://java.sun.com/xml/ns/j2ee/web-app_2_4.xsd http://xmlns.jcp.org/xml/ns/javaee http://java.sun.com/xml/ns/javaee/web-app_2_5.xsd" version="2.4">
  3. <servlet>
  4. <servlet-name>CityByXMLServlet</servlet-name>
  5. <servlet-class>servlet.CityByXMLServlet</servlet-class><!--类的位置 -->
  6. </servlet>
  7. <servlet-mapping>
  8. <servlet-name>CityByXMLServlet</servlet-name><!--你创建的类名 -->
  9. <url-pattern>/CityByXMLServlet</url-pattern>
  10. </servlet-mapping>

相信看了本文案例你已经掌握了方法,更多精彩请关注Gxl网其它相关文章!

推荐阅读:

ajax文件异步实现表单上传

ajax异步下载文件的实现方法

以上就是Ajax怎么实现动态加载组合框(附代码)的详细内容,更多请关注Gxl网其它相关文章!

人气教程排行