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 相关文章推荐
预加载css或javascript的js代码
Apr 23 Javascript
js实现右下角可关闭最小化div(可用于展示推荐内容)
Jun 24 Javascript
jQGrid动态填充select下拉框的选项值(动态填充)
Nov 28 Javascript
jQuery动态追加页面数据以及事件委托详解
May 06 jQuery
微信小程序模板(template)使用详解
Jan 31 Javascript
video.js 实现视频只能后退不能快进的思路详解
Aug 09 Javascript
微信小程序页面间传值与页面取值操作实例分析
Apr 30 Javascript
Vue实现日历小插件
Jun 26 Javascript
layui数据表格 table.render 报错的解决方法
Sep 29 Javascript
基于iview-admin实现动态路由的示例代码
Oct 02 Javascript
javascript设计模式 ? 适配器模式原理与应用实例分析
Apr 13 Javascript
原生JavaScript实现弹幕组件的示例代码
Oct 12 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
php中通过smtp发邮件的类,测试通过
2007/01/22 PHP
php写的简易聊天室代码
2011/06/04 PHP
PHP+Mysql+jQuery实现动态展示信息
2011/10/08 PHP
深入php处理整数函数的详解
2013/06/09 PHP
destoon调用自定义模板及样式的公告栏
2014/06/21 PHP
浅谈PHP解析URL函数parse_url和parse_str
2014/11/11 PHP
PHP使用mkdir创建多级目录的方法
2015/12/22 PHP
PHP安装GeoIP扩展根据IP获取地理位置及计算距离的方法
2016/07/01 PHP
基于Jquery插件开发之图片放大镜效果(仿淘宝)
2011/11/19 Javascript
JS判断当前日期是否大于某个日期的实现代码
2012/09/02 Javascript
js跨浏览器的事件侦听器和事件对象的使用方法
2015/12/17 Javascript
详解javascript高级定时器
2015/12/31 Javascript
jQuery Easyui快速入门教程
2016/08/21 Javascript
js实现1,2,3,5数字按照概率生成
2017/09/12 Javascript
详解angular2如何手动点击特定元素上的点击事件
2018/10/16 Javascript
详解vue文件中使用echarts.js的两种方式
2018/10/18 Javascript
jQuery实现当拉动滚动条到底部加载数据的方法分析
2019/01/24 jQuery
Vue实现根据hash高亮选项卡
2019/05/27 Javascript
vue实现一拉到底的滑动验证
2019/07/25 Javascript
基于Element的组件改造的树形选择器(树形下拉框)
2020/02/27 Javascript
基于vue的video播放器的实现示例
2021/02/19 Vue.js
python通过urllib2获取带有中文参数url内容的方法
2015/03/13 Python
Python socket网络编程TCP/IP服务器与客户端通信
2017/01/05 Python
kafka监控获取指定topic的消息总量示例
2019/12/23 Python
pycharm运行程序时看不到任何结果显示的解决
2020/02/21 Python
TensorFlow keras卷积神经网络 添加L2正则化方式
2020/05/22 Python
Pytorch转keras的有效方法,以FlowNet为例讲解
2020/05/26 Python
Html5 webRTC简单实现视频调用的示例代码
2020/09/23 HTML / CSS
新闻专业应届生求职信
2013/10/31 职场文书
高中生家长会演讲稿
2014/01/14 职场文书
建设单位项目负责人任命书
2014/06/06 职场文书
优秀班主任主要事迹材料
2014/12/16 职场文书
幼儿教师个人总结
2015/02/05 职场文书
校友回访母校寄语
2015/02/26 职场文书
付款证明模板
2015/06/19 职场文书
css3带你实现3D转换效果
2022/02/24 HTML / CSS