js使用xml数据载体实现城市省份二级联动效果


Posted in Javascript onNovember 08, 2017

本文实例为大家分享了使用xml数据载体实现城市省份二级联动的具体代码,供大家参考,具体内容如下

首先写好前台页面testProvince.jsp,将请求通过open、send发送到服务器

<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> 
<% 
String path = request.getContextPath(); 
String basePath = request.getScheme()+"://"+request.getServerName()+":"+request.getServerPort()+path+"/"; 
%> 
 
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> 
<html> 
 <head> 
 <base href="<%=basePath%>" rel="external nofollow" > 
 <title>二级联动</title> 
 <meta http-equiv="pragma" content="no-cache"> 
 <meta http-equiv="cache-control" content="no-cache"> 
 <meta http-equiv="expires" content="0">  
 <meta http-equiv="keywords" content="keyword1,keyword2,keyword3"> 
 <meta http-equiv="description" content="This is my page"> 
 <style type="text/css"> 
  select{ 
   width:111px; 
  } 
 </style> 
 </head> 
 
 <body> 
  <select id="provinceID"> 
  <option>选择省份</option> 
  <option>湖南</option> 
  <option>广东</option> 
  </select> 
    
  <select id="cityID"> 
   <option>选择城市</option> 
  </select> 
 </body> 
 <script type="text/javascript"> 
  //创建ajax对象 
  function createAjax(){ 
   var ajax = null; 
   try{ 
    ajax = new ActiveXObject("microsoft.xmlhttp"); 
   }catch(e){ 
    try{ 
     ajax = new XMLHttpRequest(); 
    }catch(e1){ 
     alert("请更换浏览器"); 
    } 
   } 
   return ajax; 
  } 
 </script> 
 
 <script type="text/javascript"> 
  document.getElementById("provinceID").onchange = function(){ 
   //清空城市除了第一项 
   var cityElem = document.getElementById("cityID"); 
   cityElem.options.length = 1; 
    
   //获取选中的省份 
   var province = this.value; 
   //进行编码处理 
   province = encodeURI(province); 
   if("选择省份" != province){ 
    var ajax = createAjax(); 
    //提交方式为GET 
    var method = "GET"; 
    //提交路径为servlet路径 
    var url = "${pageContext.request.contextPath}/ProvinceServlet?time=" + new Date().getTime()+ 
      "&province=" +province; 
    //准备发送异步请求 
    ajax.open(method, url); 
    //由于是get请求,所以不需要设置请求头 
    //发送请求 
    ajax.send(null); 
     
    //监听服务器响应状态的变化 
    ajax.onreadystatechange = function(){ 
     //响应状态为4 表示ajax已经完全接受到服务器的数据了 
     if(ajax.readyState == 4){ 
      //接收到的数据正常 
      if(ajax.status == 200){ 
       //获取服务器传来的html数据 
       var xmlDocument = ajax.responseXML; 
       //进行dom操作解析xml 
       //解析xml数据 
       var citys = xmlDocument.getElementsByTagName("city"); 
       for(var i = 0; i< citys.length;i++){ 
        //获取xml中的值 :不能用innerHTML,要用nodeValue 
        var city = citys[i].firstChild.nodeValue; 
        //创建option 
        var optElement = document.createElement("option"); 
        optElement.innerHTML = city; 
        //获取city 
        var cityElems = document.getElementById("cityID"); 
        cityElems.appendChild(optElement); 
       } 
        
      } 
     } 
    } 
   } 
    
  } 
   
   
 </script> 
</html>

然后在后台ProvinceServlet中通过GET方式获取请求,将返回的数据以O(输出)流的方式发送出去,上面代码的ajax.responseXML获取输出的数据,并进行dom操作

public class ProvinceServlet extends HttpServlet { 
 @Override 
 protected void doGet(HttpServletRequest req, HttpServletResponse resp) 
   throws ServletException, IOException { 
  req.setCharacterEncoding("utf-8"); 
  resp.setCharacterEncoding("utf-8"); 
  String province = req.getParameter("province"); 
  //重新编码 
  province = new String(province.getBytes("ISO-8859-1"),"utf-8"); 
  //设置格式为xml 
  resp.setContentType("text/xml;charset=utf-8"); 
  //获取字符输出流 
  PrintWriter pw = resp.getWriter(); 
  //拼接xml头 
  pw.write("<?xml version='1.0' encoding='UTF-8'?>"); 
  pw.write("<citys>"); 
  if ("湖南".equals(province)) { 
   pw.write("<city>长沙</city>"); 
   pw.write("<city>株洲</city>"); 
   pw.write("<city>湘潭</city>"); 
   pw.write("<city>岳阳</city>"); 
  }else if("广东".equals(province)){ 
   pw.write("<city>广州</city>"); 
   pw.write("<city>深圳</city>"); 
   pw.write("<city>中山</city>"); 
  } 
  pw.write("</citys>"); 
  pw.flush(); 
  pw.close(); 
 } 
}

运行结果如下:

js使用xml数据载体实现城市省份二级联动效果

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
javascript显示选择目录对话框的代码
Nov 10 Javascript
锋利的jQuery 要点归纳(一) jQuery选择器
Mar 21 Javascript
在javascript中对于DOM的加强
Apr 11 Javascript
AngularJS中的指令全面解析(必看)
May 20 Javascript
JS触发服务器控件的单击事件(详解)
Aug 06 Javascript
微信小程序 wx.request(object) API详解及实例代码
Sep 30 Javascript
微信小程序 网络请求(post请求,get请求)
Jan 17 Javascript
Vue.js实战之组件的进阶
Apr 04 Javascript
Vue组件中slot的用法
Jan 30 Javascript
React 组件间的通信示例
Jun 14 Javascript
JavaScript的变量声明与声明提前用法实例分析
Nov 26 Javascript
Javascript异步编程async实现过程详解
Apr 02 Javascript
AngularJS实现图片上传和预览功能的方法分析
Nov 08 #Javascript
javascript自定义事件功能与用法实例分析
Nov 08 #Javascript
详解在vue-cli中引用jQuery、bootstrap以及使用sass、less编写css
Nov 08 #jQuery
ES6中javascript实现函数绑定及类的事件绑定功能详解
Nov 08 #Javascript
手把手教你使用vue-cli脚手架(图文解析)
Nov 08 #Javascript
vue中实现滚动加载更多的示例
Nov 08 #Javascript
详解使用webpack打包编写一个vue-toast插件
Nov 08 #Javascript
You might like
shopex中集成的站长统计功能的代码简单分析
2011/08/11 PHP
PHP导出EXCEL快速开发指南--PHPEXCEL的使用详解
2013/06/03 PHP
PHP网站开发中常用的8个小技巧
2015/02/13 PHP
php验证邮箱和ip地址最简单方法汇总
2015/10/30 PHP
详解WordPress中的头像缓存和代理中的缓存更新方法
2016/03/01 PHP
Joomla数据库操作之JFactory::getDBO用法
2016/05/05 PHP
php实现JWT验证的实例教程
2020/11/26 PHP
javascript 哈希表(hashtable)的简单实现
2010/01/20 Javascript
JavaScript 10件让人费解的事情
2010/02/15 Javascript
jQuery.Autocomplete实现自动完成功能(详解)
2010/07/13 Javascript
扩展JS Date对象时间格式化功能的小例子
2013/12/02 Javascript
jQuery实现统计复选框选中数量
2014/11/24 Javascript
JS与jQuery遍历Table所有单元格内容的方法
2015/12/07 Javascript
JavaScript驾驭网页-CSS与DOM
2016/03/24 Javascript
纯JS前端实现分页代码
2016/06/21 Javascript
JS不完全国际化&amp;本地化手册 之 理论篇
2016/09/27 Javascript
web前端开发upload上传头像js示例代码
2016/10/22 Javascript
jQueryUI 拖放排序遇到滚动条时有可能无法执行排序的小bug及解决方案
2016/12/19 Javascript
Bootstrap表单控件学习使用
2017/03/07 Javascript
Angular路由ui-router配置详解
2018/08/01 Javascript
Angular使用ControlValueAccessor创建自定义表单控件
2019/03/08 Javascript
详解webpack4.x之搭建前端开发环境
2019/03/28 Javascript
js实现滚动条自动滚动
2020/12/13 Javascript
解决Python 遍历字典时删除元素报异常的问题
2016/09/11 Python
Python实现简单的多任务mysql转xml的方法
2017/02/08 Python
django admin添加数据自动记录user到表中的实现方法
2018/01/05 Python
深入浅析Python获取对象信息的函数type()、isinstance()、dir()
2018/09/17 Python
python构建基础的爬虫教学
2018/12/23 Python
Python 实用技巧之利用Shell通配符做字符串匹配
2019/08/23 Python
Python:slice与indices的用法
2019/11/25 Python
django 外键创建注意事项说明
2020/05/20 Python
python如何查看安装了的模块
2020/06/23 Python
现代化办公人员工作的自我评价
2013/10/16 职场文书
公务员培的训心得体会
2014/09/01 职场文书
安全生产工作汇报
2014/10/28 职场文书
关于html选择框创建占位符的问题
2021/06/09 HTML / CSS