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 相关文章推荐
jQuery(1.3.2) 7行代码搞定跟随屏幕滚动的层
May 21 Javascript
浅析AngularJS Filter用法
Dec 28 Javascript
jQuery获取父元素节点、子元素节点及兄弟元素节点的方法
Apr 14 Javascript
深入浅析JavaScript中with语句的理解
May 12 Javascript
原生js和jquery分别实现横向导航菜单效果
May 13 Javascript
使用Promise解决多层异步调用的简单学习心得
May 17 Javascript
JavaScript探测CSS动画是否已经完成的方法
Aug 30 Javascript
JavaScript实现前端分页控件
Apr 19 Javascript
JavaScript简介_动力节点Java学院整理
Jun 26 Javascript
element-ui上传一张图片后隐藏上传按钮功能
May 22 Javascript
使用layui定义一个模块并使用的例子
Sep 14 Javascript
微信小程序本地存储实现每日签到、连续签到功能
Oct 09 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.ini实现Mysql导入数据库文件最大限制的修改方法
2007/12/11 PHP
PHP strtr() 函数使用说明
2008/11/21 PHP
php json_encode奇怪问题说明
2011/09/27 PHP
thinkphp3.0 模板中函数的使用
2012/11/13 PHP
PHP5函数小全(分享)
2013/06/06 PHP
浅谈PHP中其他类型转化为Bool类型
2016/03/28 PHP
关于Aptana Studio生成自动备份文件的解决办法
2009/12/23 Javascript
在Ubuntu系统上安装Ghost博客平台的教程
2015/06/17 Javascript
Node.js巧妙实现Web应用代码热更新
2015/10/22 Javascript
AngularJS ionic手势事件的使用总结
2017/08/09 Javascript
bootstrap响应式工具使用详解
2017/11/29 Javascript
详解微信小程序实现跑马灯效果(附完整代码)
2019/04/29 Javascript
JavaScript进阶(三)闭包原理与用法详解
2020/05/09 Javascript
浅谈vue获得后台数据无法显示到table上面的坑
2020/08/13 Javascript
微信小程序用户登录和登录态维护的实现
2020/12/10 Javascript
python插入排序算法的实现代码
2013/11/21 Python
python访问sqlserver示例
2014/02/10 Python
用Python实现一个简单的能够发送带附件的邮件程序的教程
2015/04/08 Python
Python命令行参数解析模块getopt使用实例
2015/04/13 Python
Python实现中文数字转换为阿拉伯数字的方法示例
2017/05/26 Python
Python实现简单文本字符串处理的方法
2018/01/22 Python
python实现抠图给证件照换背景源码
2019/08/20 Python
python+requests接口自动化框架的实现
2020/08/31 Python
基于Python爬取京东双十一商品价格曲线
2020/10/23 Python
诗狄娜化妆品官方网站:Stila Cosmetics
2016/12/21 全球购物
意大利宠物用品购物网站:Bauzaar
2018/09/15 全球购物
斯洛伐克最大的婴儿食品和用品网上商店:Feedo.sk
2020/12/21 全球购物
市场部业务员岗位职责
2014/04/02 职场文书
中学生国旗下讲话稿
2014/04/26 职场文书
工地宣传标语
2014/06/18 职场文书
2014年双拥工作总结
2014/11/21 职场文书
2014年外贸业务员工作总结
2014/12/11 职场文书
民主评议党员个人自我评价
2015/03/03 职场文书
2015年新教师个人工作总结
2015/10/14 职场文书
《草船借箭》教学反思
2016/02/23 职场文书
CSS3实现的水平标题菜单
2021/04/14 HTML / CSS