`
lichaobao
  • 浏览: 47310 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类
最新评论

ajax获取服务器以xml形式输出省市数据,并获取数据绑定前台下拉框和实现联动

    博客分类:
  • ajax
阅读更多
1、利用servlet作为服务器,以xml形式输出省市的、数据,代码如下:
public void doGet(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {

response.setCharacterEncoding("utf-8");
response.setContentType("text/xml,charset=utf-8");//表示以xml形式输出数据
PrintWriter out = response.getWriter();

out.println("<china>");
out.println("<province name='广东省'>");
out.println("<city>广州市</city>");
out.println("<city>佛山市</city>");
out.println("<city>深圳市</city>");
out.println("<city>湛江市</city>");
out.println("</province>");

out.println("<province name='江苏省'>");
out.println("<city>徐州市</city>");
out.println("<city>无锡市</city>");
out.println("<city>常州市</city>");
out.println("</province>");

out.println("<province name='广西省'>");
out.println("<city>桂林市</city>");
out.println("<city>北海市</city>");
out.println("<city>南宁市</city>");
out.println("</province>");
out.println("</china>");
out.close();
}

public void doPost(HttpServletRequest request, HttpServletResponse response)
throws ServletException, IOException {
doGet(request, response);
}



2、test.js文件,在这个文件会模拟ajax连接servlet服务器,并获取服务器输出的xml数据,并绑定前台下拉框和实现联动  代码如下:

//创建XmlHttpRequest对象
function getXmlHttpRequest(){
var xmlHttpRequest;
try {
xmlHttpRequest = new XMLHttpRequest();
} catch (e) {
try {
              // Internet  Explorer
              xmlHttpRequest = new ActiveXObject("Msxml2.XMLHTTp");
         }catch(e){
              try{
                   // Internet  Explorer
                   xmlHttpRequest = new ActiveXObject("Microsoft.XMLHTTP");
              }catch(e){
              }
         }
}
return xmlHttpRequest;
}
window.onload = function(){
var data;
var xmlHttpRequest = getXmlHttpRequest();
xmlHttpRequest.onreadystatechange = function(){
if(xmlHttpRequest.readyState==4){
if(xmlHttpRequest.status==200){
data = xmlHttpRequest.responseXML;
//获取所有标签province元素
var provinceElements = data.getElementsByTagName("province");
for(var i = 0 ;i < provinceElements.length ; i++){
//得到每个province元素
var provinceElement = provinceElements[i];

//获取元素中name的属性值
var value = provinceElement.getAttribute("name");
//创建option元素
var optionElement = document.createElement("option");
    //给option设置value属性值
optionElement.setAttribute("value",value);
//创建文本节点
var textElement = document.createTextNode(value);
//给option元素追加文本
optionElement.appendChild(textElement);
//获取id为province的元素
var province = document.getElementById("province");
//给province元素追加option
province.appendChild(optionElement);

}
}
}
}
//xmlHttpRequest.open("GET","./servlet/HtmlServlet?a=8",true);
xmlHttpRequest.open("POST","./servlet/XmlServlet",true);
xmlHttpRequest.setRequestHeader("CONTENT-TYPE","application/x-www-form-urlencoded");//使用get可以不设置,使用post必须设置,告知服务器正在发送数据,并通过url编码
xmlHttpRequest.send(null);
//xmlHttpRequest.send("b=9&c=10");

document.getElementById("province").onchange = function(){
//获取id为province的元素
var city = document.getElementById("city");
var optionConut = city.options.length;//获取城市中页面显示的选择数目
for(var j = 0; optionConut>1&&j < optionConut-1; j++){
city.options.remove(1);//删除除了请选择这个选项的之前所有选项
} //city.sel.selectindex=1;
var selectValue = this.options[this.selectedIndex].value;
//alert(selectValue);
var provinceElements = data.getElementsByTagName("province");
for (var i = 0; i < provinceElements.length; i++) {
//得到每个province元素
var provinceElement = provinceElements[i];

//获取元素中name的属性值
if (provinceElement.getAttribute("name") == selectValue) {
var cityElements = provinceElement.getElementsByTagName("city");
for (var j = 0; j < cityElements.length; j++){
//cityElements[i].childNodes[0].nodeValue
var cityElement = cityElements[j].childNodes[0];
//获取city元素文本值
var text = cityElement.nodeValue;
//创建option元素
var optionElement = document.createElement("option");
//给option设置value属性值
optionElement.setAttribute("value", text);
//创建文本节点
var textElement = document.createTextNode(text);
//给option元素追加文本
optionElement.appendChild(textElement);
//给province元素追加option
city.appendChild(optionElement);
}
}
}
}

}




3、前台jsp页面


<%@ page language="java" import="java.util.*" pageEncoding="utf-8"%>

<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">
<html>
  <head>
    <title></title>
<script type="text/javascript"  src="${pageContext.request.contextPath }/scripts/test.js"></script>
  </head>
 
  <body>
  <form action="" enctype="application/x-www-form-urlencoded" >
    <div>
          省份:<select id="province">
          <option value="请选择">请选择</option>
          </select>
          市区:<select id="city">
              <option value="请选择">请选择</option>
          </select>
    </div>
    </form>
  </body>
</html>



0
1
分享到:
评论

相关推荐

    AJAX版省市区三级联动下拉框

    在IT领域,"AJAX版省市区三级联动下拉框"是一种常见的前端交互设计,尤其在网站表单中,用于用户选择地理位置时。这个技术基于AJAX(Asynchronous JavaScript and XML),它允许网页在不刷新整个页面的情况下与...

    Ajax 无限级 联动下拉框

    综上所述,Ajax无限级联动下拉框的实现涉及前端JavaScript编程、服务器端数据处理以及良好的用户体验设计。通过合理的架构和优化,我们可以创建出高效、流畅的多级筛选功能,提升用户在浏览和操作网站时的满意度。

    ajax xml省市区三级联动

    在网页开发中,"ajax xml省市区三级联动"是一个常见的功能需求,主要用于用户在选择省份时,自动更新下拉框中的城市选项,再选择城市时,又会动态加载出对应的区县选项。这个过程无需刷新整个页面,提升了用户体验。...

    jQuery解析xml文件,实现省市县三级联动下拉框

    总的来说,利用jQuery解析XML文件并实现省市县三级联动下拉框,需要理解XML结构,掌握jQuery的DOM操作和事件处理,以及良好的编程实践。这个过程对于提升前端开发技能,特别是数据处理和交互设计能力大有裨益。

    jquery 省市联动下拉框

    在省市联动中,当省份改变时,AJAX可以发送请求到服务器获取新城市数据。 3. **DOM操作**:jQuery提供了丰富的API来操作DOM(Document Object Model),在这里,我们需要根据AJAX返回的数据动态更新城市下拉框的...

    Jquery各种插件和JQuery Ajax三级联动地区下拉框 & 非Ajax实现三级联动

    **jQuery 插件和 AJAX 三级联动地区下拉框** 在网页开发中,尤其是在处理表单数据时,经常需要实现一种功能,即“三级联动地区下拉框”。这个功能允许用户通过选择省份、城市和区县,来精确地指定一个地理位置。在...

    Ajax_实现下拉框的联动(详细注释)

    Ajax,全称Asynchronous JavaScript and XML,是一种在不重新加载整个网页的情况下,与服务器交换数据并更新部分网页的技术。通过使用Ajax,我们可以实现页面的异步更新,提高用户体验。 要实现下拉框联动,我们...

    AJAX jsp 省市区三级联动

    总结起来,"AJAX jsp 省市区三级联动"主要利用AJAX的异步特性,结合JSP的服务器端处理能力,实现了网页局部数据的动态更新。这一技术在很多Web应用中都有广泛应用,如电子商务网站的地址填写、地图应用的地址搜索等...

    四级联动下拉框

    - AJAX:无刷新的关键在于AJAX(Asynchronous JavaScript and XML),它允许前端与后台异步通信,获取新的数据并更新页面,而无需刷新整个页面。 3. **框架应用**: - jQuery:对于较旧的项目,可能使用jQuery库...

    Springboot中ajax实现动态绑定省市区

    这里我们将探讨如何在Spring Boot中利用Ajax来动态绑定省市区数据,特别是从高德地图API获取这些数据。 首先,我们需要理解Spring Boot的基础架构。Spring Boot是一个简化Spring应用开发的框架,它内置了Tomcat...

    struts实现下拉框多级联动

    以上就是Struts框架实现下拉框多级联动的关键步骤和涉及的技术点。在实际开发中,你还需要结合具体业务需求和项目规范进行调整和优化。在提供的文件列表中,`src`目录可能包含了Action类和其他相关Java源代码,`...

    [其他类别]蓝驿轨迹ajax+xml实现省市区无刷新联动源码_citychange(ASP.NET源码).rar

    【标题】:“蓝驿轨迹ajax+xml实现省市区无刷新联动源码_citychange”是一个基于ASP.NET技术的Web应用示例,它展示了如何利用Ajax和XML技术来实现在用户选择省份时,城市和区县列表自动更新,而无需整个页面刷新。...

    Jquery实现ajax三级联动

    在网页开发中,"Jquery实现ajax三级联动"是一个常见的需求,主要用于动态更新页面内容,如下拉框的联动选择。这种技术可以提高用户体验,减少不必要的页面刷新。在这个场景中,我们将探讨如何利用jQuery和Ajax技术...

    ajax+Jquery省市县三级联动

    在网页开发中,"ajax+Jquery省市县三级联动"是...开发者可以通过查看和学习这些文件,了解并掌握如何使用Ajax和Jquery实现省市县三级联动的具体实现方式。这个案例对于学习前端动态交互和Ajax技术是非常有价值的实践。

    基于jQuery Selector.js插件实现的联动下拉框表单美化效果源码.zip

    4. **Ajax请求**(如果需要):如果数据不是预先加载的,可以发送Ajax请求到服务器获取新的下拉框选项。Ajax允许我们在不刷新页面的情况下获取和更新数据,保持用户体验的流畅性。 5. **更新下拉框**:使用jQuery的...

    json格式省市二级联动xml文件

    总之,"city.xml"文件是用于实现省市二级联动的XML数据源,通过解析和处理XML,我们可以构建出交互式的省市选择器,提升用户的输入体验。在实际项目中,根据性能和需求,可以灵活选择XML或JSON作为数据交换格式。

    SSM整合前台后台交互的三级省市联动

    Ajax技术允许我们在不刷新整个页面的情况下与服务器交换数据并局部更新页面。在此案例中,我们可以使用jQuery或者其他现代JavaScript库如Vue或React来发送Ajax请求。 2. **Ajax请求**:当用户在省/市选择下拉框中...

    基于Ajax的二级联动下拉列表.rar

    Ajax并非一种单一的技术,而是一组技术的集合,包括XMLHttpRequest对象(用于在后台与服务器进行通信)、JavaScript(用于处理数据和控制用户界面)、DOM(文档对象模型,用于操作HTML或XML文档)等。通过Ajax,...

    sharepoint二级联动的下拉框控件

    当用户在第一个下拉框(一级)中做出选择时,触发一个事件,该事件使用AJAX请求从服务器获取与所选值关联的数据,并填充第二个下拉框(二级)。 4. **Web部件**:为了在页面上展示这些联动下拉框,可以创建一个...

Global site tag (gtag.js) - Google Analytics