- 浏览: 831282 次
- 性别:
- 来自: 北京、四川
文章分类
最新评论
-
sunbeamzheng:
总结的很好,好好看看。 拷贝问题确实很需要注意,特别是影不影响 ...
java深拷贝与浅拷贝 -
xmh8023:
...
获取POST数据的值 -
xmh8023:
我访问别的服务器怎么办?急求
获取POST数据的值 -
xmh8023:
String urlString="http://l ...
获取POST数据的值 -
lv12312:
Tomcat 7的老版本么?有bug的,https://iss ...
JMX问题
开发原因:
1、由于所进行的项目中的省份和城市并不是中国所有的省份和市,并且很有可能随着时间的推移数据发生变化,因此整个省份和城市数据存在数据库中保存。
2、由于使用了公司集成的一套东西,在涉及到这类下拉框时的修改回显数据时会比较困难,公司的那套东西了解的比较少,并且也不允许我们去修改它的东西。
基于上面两个情况,决定自己写一个。
思路:
1、后台把数据准备好,省份和城市的级联关系
2、把数据以json方式传到前台
3、前台对json形式的数据进行解析
4、前台通过jquery的ajax进行请求json数据
5、当选择省份显示相应的城市的时候使用select的onchange事件
6、把后台返回的数据通过eval转换为javascript中的json数据
大体上就这些吧
下面是所有的代码
首先是后台的代码,需要添加的包
下面是一个servlet,主要是准备数据,并和前台进行传输数据:
下面的代码是前面的sevlert使用的地区的类:
下面是前台展示的jsp页面,其实完全可以是一个html页面:
1、由于所进行的项目中的省份和城市并不是中国所有的省份和市,并且很有可能随着时间的推移数据发生变化,因此整个省份和城市数据存在数据库中保存。
2、由于使用了公司集成的一套东西,在涉及到这类下拉框时的修改回显数据时会比较困难,公司的那套东西了解的比较少,并且也不允许我们去修改它的东西。
基于上面两个情况,决定自己写一个。
思路:
1、后台把数据准备好,省份和城市的级联关系
2、把数据以json方式传到前台
3、前台对json形式的数据进行解析
4、前台通过jquery的ajax进行请求json数据
5、当选择省份显示相应的城市的时候使用select的onchange事件
6、把后台返回的数据通过eval转换为javascript中的json数据
大体上就这些吧
下面是所有的代码
首先是后台的代码,需要添加的包
下面是一个servlet,主要是准备数据,并和前台进行传输数据:
package com.demo; import java.io.IOException; import java.io.PrintWriter; import java.util.ArrayList; import java.util.List; import javax.servlet.http.HttpServlet; import javax.servlet.http.HttpServletRequest; import javax.servlet.http.HttpServletResponse; import net.sf.json.JSONArray; public class TestJsonServlet extends HttpServlet { /** * */ private static final long serialVersionUID = 1L; public void doGet(HttpServletRequest request,HttpServletResponse response){ response.setContentType("text/plain"); response.setCharacterEncoding("utf-8"); List list = new ArrayList(); //转换Array BaseAreaInfo a=new BaseAreaInfo(); a.setArea_code("010"); a.setArea_name("北京"); a.setParent_area_code("NULL"); list.add(a); BaseAreaInfo b=new BaseAreaInfo(); b.setArea_code("021"); b.setArea_name("上海"); b.setParent_area_code("NULL"); list.add(b); BaseAreaInfo c=new BaseAreaInfo(); c.setArea_code("023"); c.setArea_name("四川"); c.setParent_area_code("NULL"); c.setSubAreaList(new ArrayList()); BaseAreaInfo c1=new BaseAreaInfo(); c1.setArea_code("028"); c1.setArea_name("成都"); c1.setParent_area_code("023"); c.getSubAreaList().add(c1); BaseAreaInfo c2=new BaseAreaInfo(); c2.setArea_code("0826"); c2.setArea_name("广安"); c2.setParent_area_code("023"); c.getSubAreaList().add(c2); BaseAreaInfo c3=new BaseAreaInfo(); c3.setArea_code("0829"); c3.setArea_name("南充"); c3.setParent_area_code("023"); c.getSubAreaList().add(c3); list.add(c); //list.add(new TestBean()); System.out.println("---"); //转换List JSONArray jsonList = JSONArray.fromObject(list); try { PrintWriter out = response.getWriter(); out.println(jsonList.toString()); } catch (IOException e) { // TODO Auto-generated catch block e.printStackTrace(); } } public void doPost(HttpServletRequest request,HttpServletResponse response){ this.doGet(request, response); } }
下面的代码是前面的sevlert使用的地区的类:
package com.demo; import java.util.List; public class BaseAreaInfo { private String area_code; private String area_name; private String parent_area_code; private List subAreaList; /** * @return the area_code */ public String getArea_code() { return area_code; } /** * @param area_code the area_code to set */ public void setArea_code(String area_code) { if(area_code!=null){ this.area_code = area_code.trim(); }else{ this.area_code = area_code; } } /** * @return the area_name */ public String getArea_name() { return area_name; } /** * @param area_name the area_name to set */ public void setArea_name(String area_name) { if(area_code!=null){ this.area_name = area_name.trim(); }else{ this.area_name = area_name; } } /** * @return the parent_area_code */ public String getParent_area_code() { return parent_area_code; } /** * @param parent_area_code the parent_area_code to set */ public void setParent_area_code(String parent_area_code) { if(parent_area_code!=null){ this.parent_area_code = parent_area_code.trim(); }else{ this.parent_area_code = parent_area_code; } } /** * @return the subAreaList */ public List getSubAreaList() { return subAreaList; } /** * @param subAreaList the subAreaList to set */ public void setSubAreaList(List subAreaList) { this.subAreaList = subAreaList; } }
下面是前台展示的jsp页面,其实完全可以是一个html页面:
<%@ 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> <title>testAjax</title> <script type="text/javascript" src="jquery.js" language="javascript"></script> </head> <script type="text/javascript" language="javascript"> /********************************************************* * * 省份的级联JS,必须联合起来使用 * showProvince(bankCountry,provinceParam,isEdit) * showCity(cityParam,isEdit) * 在需要显示的地方里写下代码: * 省份的代码:<div id="provinces"></div> * 城市的代码:<div id="citys"></div> * *生成的省份的下拉框(select)为ID为provinceSelect *生成的城市的下拉框(select)为ID为citySelect * *********************************************************/ var jsonDatas;//身份数据 /** * 从后台获取数据 **/ function acquireData(){ if(jsonDatas==undefined){ $.ajax({ type:"POST", url:"/JqueryDemo/testJson", async:false, success:function(data){ jsonDatas=eval(data); } }); } } /**************************************************** * 获取省份的下拉框 * bankCountry 国家 * provinceParam 用来回显的省份代码 * isEdit 是否允许编辑,0为不允许,1为允许 ******************************************************/ function getProvinceSelect(bankCountry,provinceParam,isEdit){ acquireData(); var province_select="<select id='provinceSelect' "; if(isEdit!=undefined && !isEdit){ province_select=province_select+" disabled " } province_select=province_select+" onchange='showCity()'><option value='0'>---请选择---</option>"; if(bankCountry=="china"){ for(var i=0;i<jsonDatas.length;i++){ var province=jsonDatas[i]; //省份信息 province_select=province_select+"<option value='"+province.area_code+"' " if(provinceParam==province.area_code){ province_select=province_select+" selected " } province_select=province_select+" >"+province.area_name+"</option>"; } } province_select=province_select+"</select> "; return province_select; } /**************************************************** * 获取城市的下拉框 * provinceParam 这是用来做级联的,传入省份的代码 * cityParam 用来回显的城市代码 * isEdit 是否允许编辑,0为不允许,1为允许 ******************************************************/ function getCitySelect(provinceParam,cityParam,isEdit){ acquireData(); var city_select="<select id='citySelect' "; if(isEdit!=undefined && !isEdit){ city_select=city_select+" disabled " } city_select=city_select+" ><option value='0'>---请选择---</option>" for(var i=0;i<jsonDatas.length;i++){ var province=jsonDatas[i]; //省份信息 province_name=province.area_name; province_code=province.area_code; if(provinceParam==province_code){ for(var j=0;j<province.subAreaList.length;j++){//城市信息 city=province.subAreaList[j]; city_select=city_select+"<option value='"+city.area_code+"' "; if(cityParam==city.area_code){ city_select=city_select+" selected " } city_select=city_select+ " >"+city.area_name+"</option>"; } } } city_select=city_select+"</select> "; return city_select; } /**************************************************** * 获取省份的下拉框 * bankCountry 国家,目前只有china * provinceParam 用来回显的省份代码 * isEdit 是否允许编辑,0为不允许,1为允许 ******************************************************/ function showProvince(bankCountry,provinceParam,cityParam,isEdit){ if(bankCountry==undefined){ bankCountry="china"; } var province_select=getProvinceSelect(bankCountry,provinceParam,isEdit); var city_select=getCitySelect(provinceParam,cityParam,isEdit); var showStr=$("#provinceSelect").text(); $("#provinces").html(""); $("#citys").html(""); $("#provinces").append(province_select); $("#citys").append(city_select); if(showStr!=''){ //在showStr里有值的时候为什么不走这个方法呢 //$("#show").append(province_select); //$("#show").append(city_select); }else{ //$("#provinces").append(province_select); //$("#citys").append(city_select); } } /**************************************************** * 获取城市的下拉框 * cityParam 用来回显的城市代码 * isEdit 是否允许编辑,0为不允许,1为允许 ******************************************************/ function showCity(cityParam,isEdit){ var provinceParam=$('#provinceSelect option:selected').val(); var city_select=getCitySelect(provinceParam,cityParam,isEdit); //显示城市时需要把城市的select清空,再添加 $("#citys").html(""); $("#citys").append(city_select); } function getJsonObj(){ /* var province_select="<select id='province'>"; for(var i=0;i<jsonDatas.length;i++){ var province=jsonDatas[i]; //省份信息 province_select=province_select+"<option value='"+province.area_code+"'>"+province.area_name+"</option>"; province_name=province.area_name; province_code=province.area_code; for(var j=0;j<province.subAreaList.length;j++){//城市信息 city=province.subAreaList[j]; city_name=city.area_name; city_code=city.area_code; //alert(city_name); } } $.getJSON( //使用getJSON方法取得JSON数据 "/JqueryDemo/testJson", '', function(data){ //处理数据 data指向的是返回来的JSON数据 jsonDatas=data; for(var i=0;i<data.length;i++){ var province=data[i]; alert(province.subAreaList.length); $("#show").html(province.area_name); for(var j=0;j<province.subAreaList.length;j++){ city=province.subAreaList[j]; alert(city.area_name) } } alert(jsonDatas); } ) */ } </script> <body onload="showProvince()"> <h1>Test</h1> <div id="provinces"></div> <div id="citys"></div> <div id="content"> <input type="text" id="companyCode" name="companyCode" value="" /> </div> <div> <input type="button" name="button" value="调用方法" onClick="showProvince()"> </div> <div> <select id='testSelect' onchange="showCity()"> <option value='aaa' >aaa</option> <option value='023' ">bbb</option> </select> </div> </body> </html>
发表评论
-
一些使用的javascript
2009-08-05 19:25 1510//是否为电子邮件 function IsEmail(s ... -
用javascript解析xml文件
2009-08-05 17:08 1900使用javascript解析xml文件,以前做过一些的,现在又 ... -
正则表达式元字符列表
2008-11-25 09:30 1165下表是元字符及其在正则表达式上下文中的行为的一个完整列表: ... -
常用正则表达式
2008-11-25 09:29 985匹配中文字符的正则表达式: [u4e00-u9fa5] 评注: ... -
datejs学习
2007-12-03 11:03 2312把http://code.google.com/p/datej ... -
jQuery学习
2007-11-23 08:53 2288这两天一直在研究jquery,确实这一个ajax框架很 ... -
jquery以及正则表达式入门学习
2007-11-21 15:47 11347纯粹是入门级,按着一些教程上面的例子照着一步一步的写下来的。 ... -
正则表达式初步学习
2007-11-21 09:02 1294前天又看了一下正则表达式,虽然以前看过相关知识 ... -
JSON知识
2007-11-03 16:35 1480eval可以将字符串生成语 ...
相关推荐
1. 数据准备:首先,需要一个包含城市级联信息的数据源,如JSON文件,包含国家、省份、城市等关系。 2. HTML结构:创建基础的HTML结构,一般包括多个下拉框,每个下拉框对应一个级别(国家、省份、城市)。 3. ...
"jQuery实现级联地区选择"这个主题就是关于如何利用jQuery库来创建一个动态联动的省份-城市选择器。这个实例包含了JSP(JavaServer Pages)、JavaScript和CSS三个主要部分,旨在提供一种高效、用户友好的选择体验。 ...
在本场景中,jQuery被用来创建一个高效且用户体验良好的城市三级级联下拉菜单。 首先,我们需要理解jQuery的基本用法。jQuery的核心是选择器(Selectors),它们允许我们高效地定位页面上的HTML元素。例如,`$("#id...
在"seam2.0 全国 省份、城市级联"这个项目中,我们主要关注的是如何利用Seam 2.0实现一个全国省份和城市之间的二级联动效果。 级联选择通常用于网页表单中,允许用户首先选择一个省份,然后根据所选省份动态加载...
在实现省份与城市级联时,我们需要获取或创建省份和城市的下拉列表元素,并在用户选择省份后,根据选择更新城市列表的内容。 2. **事件监听**:JavaScript的事件监听机制是关键。我们需监听省份选择框的`change`...
jQuery城市级联是一种常见的前端交互设计,主要用于实现省市区等地理位置的联动选择,用户在选择一个省份后,相关的城市会自动加载出来,接着选择城市后,对应的区县也会动态显示。这种功能在注册、地址填写等场景...
例如,在一个国家-省份-城市的级联下拉中,选择国家后,省份列表会更新为该国的省份,接着选择省份后,城市列表会显示相应的城市。 在这个例子中,主要的步骤可能包括: 1. **HTML结构**:创建包含多个级联下拉框...
在Web开发中,实现省份和城市的级联选择是一种常见的需求,尤其在用户填写地址或进行区域筛选时。这种功能能够帮助用户逐步细化他们的选择,提高交互的效率和用户体验。在这个场景下,通常会使用HTML、JavaScript...
这种菜单一般会以级联的方式呈现,即选择一个国家后,会自动显示对应的省份列表,再选择省份后,会展示该省份下的城市选项。这样做可以有效地减少用户输入的信息量,提高用户体验。 这篇博文链接指向的是ITEYE上的...
- Ajax请求:当省份选择改变时,使用jQuery的`.ajax()`方法发送一个异步请求,获取对应省份的市列表。 - 更新DOM:在Ajax请求成功后,解析返回的数据,然后使用`.html()`或`.append()`方法更新市的下拉列表选项。 ...
这个实例是基于jQuery、AJAX和$.jetjson实现的城市级联效果的完整案例,同时还包括了一个数据库.sql文件,方便用户快速搭建并运行。接下来,我们将详细讨论这个实例中的关键知识点。 1. **jQuery**: jQuery 是一个...
"Ajax+SSH实现省份城市级联查询"是一个典型的示例,展示了如何利用这些技术提高用户体验,减少服务器负载。在此,我们将深入探讨Ajax、Spring、Hibernate和Struts2这四个关键技术以及它们在实现级联查询中的作用。 ...
3. **jQuery初始化**:在页面加载完成后,使用jQuery的`$(document).ready()`函数来初始化插件,加载初始的省份数据到第一个下拉菜单。 4. **事件绑定**:添加事件监听器,通常使用`change`事件,当用户在任一下拉...