Ajax_省城联动1

需要的包:dom4j-jar  && jaxen -1.1 --beta-6.jar (基础包)dom4j 要基于 jaxen基础包

xml数据:

 

<?xml version="1.0" encoding="UTF-8" ?>
<china>
	<province name="北京">
		<city>东城区</city>
		<city>西城区</city>
	</province>
	<province name="天津">
		<city>和平区</city>
		<city>河东区</city>
	</province>
</china> 

Province_Servlet:

 

package com.sxjyatc.Demo;

import java.io.File;
import java.io.FileInputStream;
import java.io.IOException;
import java.io.InputStream;
import java.util.List;

import javax.servlet.ServletException;
import javax.servlet.http.HttpServlet;
import javax.servlet.http.HttpServletRequest;
import javax.servlet.http.HttpServletResponse;

import org.dom4j.Attribute;
import org.dom4j.Document;
import org.dom4j.DocumentException;
import org.dom4j.io.SAXReader;

public class Province extends HttpServlet {
	@Override
	protected void doGet(HttpServletRequest req, HttpServletResponse resp)
			throws ServletException, IOException {
		resp.setContentType("text/html;charset=utf-8");
		/*
		 * 拿到所有省份
		 */
		/**
		 * 1,得到xml 解析器
		 * 2,调用解析的读方法,传递一个流对象,得到Document对象
		 */
		try {
		SAXReader reader = new SAXReader();
		InputStream in = this.getClass().getResourceAsStream("/china.xml");//得到流对象
		
		
			Document document = reader.read(in);
			System.out.println(in);
			List<Attribute> arrlist = document.selectNodes("//province/@name");
			System.out.println(1);
			StringBuilder sb = new StringBuilder();
			for(int i=0;i<arrlist.size();i++){
				sb.append(arrlist.get(i).getValue());
				if(i<arrlist.size()-1){
					sb.append(",");
				}
			}
			resp.getWriter().print(sb);
			
		} catch (DocumentException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
		
	}

}
Jsp:省份代码(市代码将在2中补全):


 

  <script type="text/javascript">
//创建异步对象
  function createXMLHttpRequest(){
  	try {
  		return new XMLHttpRequest();
  	} catch (e) {
  		try {
  			return ActvieXObject("Msxm12.XMLHTTP");
  		} catch (e) {
  			try {
  				return ActvieXObject("Microsoft.XMLHTTP");
  			} catch (e) {
  				alert("浏览器不匹配");
  			}
  		}
  	}
  };
 window.onload = function(){
	 /*
	 	ajax4步 请求Province ,得到所有省份的名称
	 	使用每个省份名称创建一个<option>元素
	 */
	 var xmlHttp = createXMLHttpRequest();
		xmlHttp.open("get","<c:url value='/province'/>",true);
		/*
			3,发送请求
			//如果是get请求 就写null,如果是post 就请响应体
		*/
		xmlHttp.send(null);
	 xmlHttp.onreadystatechange =function(){
		 if(xmlHttp.readyState ==4&&xmlHttp.status ==200){
			 //获取服务器的乡音g
			 var text = xmlHttp.responseText;
			 //使用逗号,分割得到数组
			 var arr = text.split(",");
			 //循环遍历每一个省份名称,每个名称生成一个option对象,添加到<selec>对象中
			 for(var i =0;i<arr.length;i++){
				 //创建一个指定元素
				 var op = document.createElement("option");
				 op.value=arr[i];
				 //创建节点
				 var textNode = document.createTextNode(arr[i]);
				 op.appendChild(textNode);
				 document.getElementById("p").appendChild(op);
			 }
		 }
	 };
	 
 };
  	
  </script>
  <body>
  <h1>省</h1>
  <select name="province" id="p">
  	<option>==请选择省份==</option>
  </select>
  <br/>
  <select name="city">
  	<option>==请选择市==</option>
  </select>
  </body>


 

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值