Struts2 +json+ jquery 实现三级联动

合集下载

Struts2+Jquery实现ajax并返回json类型数据

Struts2+Jquery实现ajax并返回json类型数据

Struts2+Jquery实现ajax并返回json类型数据
摘要:主要实现步骤如下: 1、JSP页面使用脚本代码执行ajax请求 2、Action中查询出需要返回的数据,并转换为json类型模式数据 3、配置struts.xml文件 4、页面脚本接受并处理数据
网上看到很多关于Struts2+ajax+jquery+json的例子,但是很多都不完整,也看不明白,主要原因是返回jsno类型数据和原来的返回字符串类型数据不一样,并且网友们实现步骤没有说清楚,让初学的朋友捉摸不透到底该怎么做。

我做了个简单的demo,供网友们学习,最后我会附上链接,可以下载整个demo.
首先需要的包(struts核心包和json需要的包):
struts核心包:
json需要的包:
commons-logging-*.jar在导入struts核心包的时候就导入了,所以导入json包的时候可以去掉这个包
页面效果:
这样就可以完成一个简单json数据类型传递的demo了。

下面附上源码文件(百度网盘),基于eclipse开发,导入即可运行:/share/link?shareid=2994183962&uk=1646424500。

JQ三级联动的写法

JQ三级联动的写法

JQ三级联动的写法今天和⼤家分享下三级联动的写法思路:1.通过AJAX获取到json⽂件⾥的数据,GET⽅法 2.在获取到的数据⾥找到省份添加到下拉菜单中 3.当省份标签被改变时change事件通过当前省份与市的共同数组下标找到对应的市区;实例:HTML<!DOCTYPE html><html><head><script src="js/jquery-3.3.1.js"></script><meta charset="UTF-8"><title></title></head><body><select id="province">//创建省份下拉菜单<option>--省份--</option></select><select id="city">//创建市下拉菜单<option>--市--</option></select><select id="code">//创建邮编下拉菜单<option>--邮编--</option></select></body></html> JQ 第⼀级联动省份<script>//----------------------------联动第⼀级-------------------------------------------------------$.get("js/city.json",function(data,status){//通过GET⽅法获取到json⽂件⾥的数据$(data.城市代码).each(function(i,el){ //通过JQ循环遍历数据var str = "<option value=" + i + ">" + data.城市代码[i].省 + "</option>"//把data的省份数据添加到下拉菜单中 $("#province").append(str);//添加option标签})})</script> 第⼆级联动市区:当省级下拉菜单被改变时触发change事件实现⼆级联动<script>$.get("js/city.json",function(data,status){//通过GET⽅法获取到json⽂件⾥的数据var provinceId = null;//纪录共同的数组下标值//----------------------------联动第⼀级-------------------------------------------------------$(data.城市代码).each(function(i,el){ //通过JQ循环遍历数据var str = "<option value=" + i + ">" + data.城市代码[i].省 + "</option>"//把data的省份数据添加到下拉菜单中 $("#province").append(str);//添加option标签});//----------------------------联动第⼆级-------------------------------------------------------$("#province").change(function(){//当省级下拉菜单被改变触发change事件$("#city").html("<option>--市--</option>");//当省级下拉菜单被改变时清空市级下拉菜单$("#code").html("<option>--邮编--</option>");//当省级下拉菜单被改变时清空邮编下拉菜单provinceId = $("#province").val();//获取到省和市的共同数组下标$(data.城市代码[provinceId].市).each(function(index,ele){//循环共同数组的市var str = "<option>" + ele.市名 + "</option>"//把data的市数据添加到下拉菜单中$("#city").append(str);//添加option标签})});</script> 第三级联动邮编:当市级级下拉菜单被改变时触发change事件实现三级联动<script>$.get("js/city.json",function(data,status){//通过GET⽅法获取到json⽂件⾥的数据var provinceId = null;//纪录共同的数组下标值//----------------------------联动第⼀级-------------------------------------------------------$(data.城市代码).each(function(i,el){ //通过JQ循环遍历数据var str = "<option value=" + i + ">" + data.城市代码[i].省 + "</option>"//把data的省份数据添加到下拉菜单中 $("#province").append(str);//添加option标签});//----------------------------联动第⼆级-------------------------------------------------------$("#province").change(function(){//当省级下拉菜单被改变触发change事件$("#city").html("<option>--市--</option>");//当省级下拉菜单被改变时清空市级下拉菜单$("#code").html("<option>--邮编--</option>");//当省级下拉菜单被改变时清空邮编下拉菜单provinceId = $("#province").val();//获取到省和市的共同数组下标$(data.城市代码[provinceId].市).each(function(index,ele){//循环共同数组的市var str = "<option>" + ele.市名 + "</option>"//把data的市数据添加到下拉菜单中$("#city").append(str);//添加option标签})});//----------------------------联动第三级-------------------------------------------------------$("#city").change(function(){$("#code").html("");$(data.城市代码[provinceId].市).each(function(index,ele){if($("#city").val()==ele.市名){console.log(ele.编码);var str = "<option>" + ele.编码 + "</option>"//把data的省份数据添加到下拉菜单中$("#code").append(str);//添加option标签}})})})</script>。

三级联动,json数据、可设置默认城市

三级联动,json数据、可设置默认城市

三级联动,json数据、可设置默认城市闲来⽆事,折腾个三级联动,json数据、可设置默认城市、可配置是否显⽰第三级select<!DOCTYPE html><html><head><meta charset="UTF-8"><title>省市县三级联动</title><script src="/jquery/1.9.0/jquery.js"></script><script type="text/javascript">var cityjson = '{'+ '"province" : ['+ '{"id" : "1", "name" : "北京市"},'+ '{"id" : "2", "name" : "⼭西省"},'+ '{"id" : "3", "name" : "河北省"}'+ '],'+ '"city" : ['+ '{"cid" : "1", "id" : "1", "name":"海淀区"},'+ '{"cid" : "1", "id" : "2", "name":"西城区"},'+ '{"cid" : "1", "id" : "2", "name":"东城区"},'+ '{"cid" : "1", "id" : "3", "name":"朝阳区"},'+ '{"cid" : "2", "id" : "4", "name":"太原市"},'+ '{"cid" : "2", "id" : "5", "name":"⼤同市"},'+ '{"cid" : "2", "id" : "6", "name":"阳泉市"},'+ '{"cid" : "3", "id" : "7", "name":"⽯家庄"},'+ '{"cid" : "3", "id" : "8", "name":"蚌埠市"},'+ '{"cid" : "3", "id" : "9", "name":"张家⼝"}'+ '],'+ '"county" : ['+ '{"cid" : "1", "id" : "1", "name":"中关村"},'+ '{"cid" : "1", "id" : "2", "name":"五道⼝"},'+ '{"cid" : "2", "id" : "3", "name":"西直门"},'+ '{"cid" : "2", "id" : "4", "name":"新街⼝"},'+ '{"cid" : "2", "id" : "5", "name":"⼩西天"},'+ '{"cid" : "3", "id" : "6", "name":"东直门"},'+ '{"cid" : "3", "id" : "7", "name":"雍和宫"},'+ '{"cid" : "3", "id" : "8", "name":"北新桥"},'+ '{"cid" : "5", "id" : "9", "name":"城区"},'+ '{"cid" : "5", "id" : "10", "name":"南郊区"},'+ '{"cid" : "5", "id" : "11", "name":"开发区"}'+ ']'+'}';;(function($, window, document, undefined){$.fn.showCity = function(opt){this.defaults = {'cityjson' : cityjson, //json字符串变量名'defaultShow' : false, //市、县是否显⽰,默认不显⽰'showCounty' : true, //是否显⽰县'defaultCity' : [0,0,0] //默认城市,对应id};this.options = $.extend({}, this.defaults, opt);var oCityJson = eval('('+this.options.cityjson+')'),oProvince = $('.province',this),oCity = $('.city',this),oCounty = $('.county',this),provinces = oCityJson.province,citys = oCityJson.city,countys = oCityJson.county;//创建省this.creatProvince = function(){var html = '';for(var i=0; i<provinces.length; i++){html += '<option value='+provinces[i].id+'>'+provinces[i].name+'</option>';}oProvince.append(html);};this.creat = function(){oProvince.html('<option value="0">选择省</option>');this.creatProvince();if(this.options.defaultShow){oCity.show();oCounty.show();oCity.html('<option value="0">选择市</option>');oCounty.html('<option value="0">选择县</option>');};this.defaultCity();this.checkProvince();if(this.options.showCounty){this.checkCounty();}};//默认城市this.defaultCity = function(){if(this.options.defaultCity.toString() == '0,0,0'){return;};var optionsCity = '';for(var i=0; i<provinces.length; i++){if(provinces[i].id == this.options.defaultCity[0]){oProvince.val(provinces[i].id);for(var j=0; j<citys.length; j++){if(citys[j].cid == provinces[i].id){optionsCity += '<option value='+citys[j].id+'>'+citys[j].name+'</option>'}}oCity.append(optionsCity).show();}};var optionscounty = '';for(var i=0; i<citys.length; i++){if(citys[i].id == this.options.defaultCity[1] && citys[i].cid == oProvince.val()){oCity.val(citys[i].id);if(this.options.showCounty){for(var j=0; j<countys.length; j++){if(countys[j].cid == citys[i].id){optionscounty += '<option value='+countys[j].id+'>'+countys[j].name+'</option>'; }}oCounty.append(optionscounty).show();}}};if(this.options.showCounty){for(var i=0; i<countys.length; i++){if(countys[i].id == this.options.defaultCity[2] && countys[i].cid == oCity.val()){oCounty.val(countys[i].id);}};}}this.checkProvince = function(){oProvince.bind('change',function(){var html = '<option value="0">选择市</option>';var val = $(this).val();for(var i=0; i<citys.length; i++){if(citys[i].cid == val){html += '<option value='+citys[i].id+'>'+citys[i].name+'</option>'}}oCity.html(html).show();oCounty.html('<option value="0">选择县</option>');})};this.checkCounty = function(){oCity.bind('change',function(){var html = '<option value="0">选择县</option>';var val = $(this).val();for(var i=0; i<countys.length; i++){if(countys[i].cid == val){html += '<option value='+countys[i].id+'>'+countys[i].name+'</option>'}}oCounty.html(html).show();})};return this.creat();}}(jQuery, window, document))$(function(){$('#selectItem').showCity({"defaultCity" : [2,5,10]});})</script></head><body><div class="selectItem" id="selectItem"><select class="province"></select><select class="city" style="display:none"></select> <select class="county" style="display:none"></select> </div></body></html>。

Struts2 json jquery spring hibernate整合开发例子

Struts2 json jquery spring hibernate整合开发例子

Struts2+json+jquery+spring+hibernate整合开发例子准备工作:1、OperaMasksStudio-7.1.1,一个中文的Eclipse IDE,下载地址:/downloads/index.faces2、jquery的UI使用的是金蝶公司的OperaMasks-UI下载地址:/website/download.html3、mysql表CREATE TABLE `ip` (`id` int(11) NOT NULL AUTO_INCREMENT,`city` varchar(255) DEFAULT NULL,`address` varchar(255) DEFAULT NULL,`start` varchar(255) DEFAULT NULL,`end` varchar(255) DEFAULT NULL,PRIMARY KEY (`id`)) ENGINE=InnoDB DEFAULT CHARSET=gbk;一、新建Apusic工程完成二、在src下新建三个包,分别是action、model、service三、生成实体类对象class右键选择model包,选择Apusic Tools 打开模型视图右键选择”数据库至代码同步”选择数据库表点击“映射”,修改主键生成类别,在IP类加入下面红色两行代码。

@Column(name = "id", nullable = false)@Id@GeneratedValue(generator = "paymentableGenerator")@GenericGenerator(name = "paymentableGenerator", strategy = "native")private ng.Integer id;四、生成业务实现右键→增强功能→生成业务实现选择第一个”spring service”,下一步输出包选择service至此spring整合hibernater已完成。

struts2+json+jquery实现ajax登录和注册功能

struts2+json+jquery实现ajax登录和注册功能

在上一篇博文中已经学习了如何整合mybatis和spring,实现持久层的CRUD操作、业务层的事务管理和spring的IoC。

现在我们这个demo的基础上,继续整合struts2,并利用json插件和jquery实现ajax,完成后系统将实现登录与注册的简单功能。

浏览器端如何简单、高效地与服务器端进行数据交互是web开发者最为关心的内容。

在客户端构造intput表单数据或者拼凑URL参数名称/参数值,然后在服务器端笨拙地用request.getParameter(“参数名称”)获取参数显然已经过时了,在struts2中,只要在action 里定义了input表单名称/URL参数名称对应的String类型属性,并设置getter和setter 方法,struts2在调用action的时候就可以根据参数值自动帮你设置好action中对应的属性值供你使用,这极大地方便了开发者。

但是json更为强大——它可以根据浏览器端上传的符合格式的数据设置action中对象的值,也就是说,struts2自动封装的数据只有一层,而json是无限层。

json给页面参数的传递带来极大的方便,结合jquery来使用,可以轻易地做到页面局部刷新、页面无跳转进行友好的系统异常提示等,其中后者是我觉得最有必要做到的一点,在action中定义一个message变量,把action方法执行的结果或者系统异常信息放到里面以json的方式返回给客户端,客户端根据这个变量的结果来进行下一步的操作或者提示系统异常信息,非常地好用。

json由javascript中的对象和数组构成,基本形式是{key:value},key为属性名称,value 为属性值,value可以为数字、字符串、数组、对象,value可以为数组和对象是json可以封装无限层数据的关键所在。

至于如何建构和解析json不是本篇博文的详细表述范围,请参考其他资料。

现在就让我们利用struts2作为MVC框架,整合json插件,在浏览器端使用jquery解析和系列化json数据,由此制作一个具有登陆/注册功能的小demo。

Struts2整合jQuery实现Ajax功能

Struts2整合jQuery实现Ajax功能

Struts2整合jQuery实现Ajax功能技术领域很多东西流行,自然有流行的道理,这几天用了jQuery,深感有些人真是聪明绝顶,能将那么多技术融合的如此完美。

首先明确个概念:jQuery是什么:是使用javacript语言开发的,用于满足项目前台各种操作需要的j程序文件。

也就是说,jQuery基本上就是个j程序集,基础核心是jQuery.j文件。

当然根据不同的版本具体的表现形式:jQuery.1.6.j或者jquery-1.5.1.j这个是版本号的不同,具体有哪些区别,还没发现。

还有这种形式jquery-1.5.1.min.j(紧缩格式,取消回车,一行代码)根据应用需求的不同,jQuery1引入jQuery项目中引入jQuery2jQuery的Aja某jQuery的内容非常庞杂,可以解决诸多方面的需求,主要包括:Aja 某,页面效果,页面验证。

作为J2ee项目,我主要关注了一下Aja某和页面验证。

具体格式,上述网站说的已经非常清楚了,记住如下格式就可以。

$.aja某({type:'POST',//提交方法url:url,//提交的地址data:data,//提交的参数ucce:ucce,//成功后,回调的函数名dataType:dataType//返回的数据类型});示例:pot的示例:使用aja某()的简化格式pot()方法:中间有三个参数:url,data(jon格式),回调函数(回调函数可以定义在他处,此处仅写函数名)$.pot(\{name:\function(data){alert(\});3Strut2整合jQuery$.pot(\)3.1Login.jp页面:功能:用户登录,首先需要输入公司标识码:正确:显示对勾;错误:显示红叉;jQuery代码:HTML:当文本框失去焦点时,触发回调事件。

公司标识当文本框‘ckey’失去焦点时:调用“checkkey”函数;“checkkey”函数分别确定两个信息:异步访问:'getKeyE某it'——判断标识是否正确的Action类。

jQuery实现简单三级联动效果

jQuery实现简单三级联动效果

jQuery实现简单三级联动效果本⽂实例为⼤家分享了jQuery实现简单三级联动的具体代码,供⼤家参考,具体内容如下⾸先写⼀个JSON数据[{"province": "吉林省","cities": [{"city": "长春市","counties": ["朝阳区", "经济开发区", "⾼新区"]},{"city": "吉林市","counties": ["东城区", "经济开发区", "⽼城区"]},{"city": "⽩⼭市","counties": ["⼆道区", "河东区", "⾼新区"]}]},{"province": "辽宁省","cities": [{"city": "沈阳市","counties": ["朝阳区", "经济开发区", "⾼新区"]},{"city": "⼤连市","counties": ["东城区", "经济开发区", "⽼城区"]},{"city": "铁岭市","counties": ["⼆道区", "河东区", "⾼新区"]}]},{"province": "⼭东省","cities": [{"city": "青岛市","counties": ["朝阳区", "经济开发区", "⾼新区"]},{"city": "济南市","counties": ["东城区", "经济开发区", "⽼城区"]},{"city": "威海市","counties": ["⼆道区", "河东区", "⾼新区"]}]}]然后⽤Ajax动态获取JSON⽂件中的数据完整代码<!DOCTYPE html><html lang="en"><head><meta charset="UTF-8" /><meta name="viewport" content="width=device-width, initial-scale=1.0" /><title>三级联动</title></head><body><!-- 三级联动 - 两个⼆级联动 --><select id="province"><option value="">---</option></select><select id="city"><option value="">---</option></select><select id="county"><option value="">---</option></select><script src="js/jquery-1.12.4.js"></script><script src="../js/createXMLHttpRequest.js"></script><script>var $province = $("#province");var $city = $("#city");var $county = $("#county");var json;$.getJSON("data/server1.json", function (data) {// 把data保存到json全局变量中json = data;// 遍历data数据$.each(data, function (index, obj) {// 获取所有的省份信息var provinceName = obj.province;// console.log(provinceName);// 将省份信息添加到对应的select元素中$province.append(`<option value="${provinceName}">${provinceName}</option>`);});$province.change(function () {// 将城市下拉列表的选项清空$city.empty();$city.append(`<option value="">---</option>`);// 获取到所选择的城市的⽂本信息var provinceElementName = $(this).children("option:selected").text();// console.log(provinceElementName);$.each(json, function (index, obj) {var provinceName = obj.province;// console.log(provinceName);if (provinceElementName === provinceName) {// 获取到城市数组集合var cities = obj.cities;// 遍历城市数组集合$.each(cities, function (index, obj) {// console.log(obj.city);// 获取到城市名称var cityName = obj.city;// 将该省对应的城市名称添加到对应的select中$city.append(`<option value="${cityName}">${cityName}</option>`);});}});});$city.change(function () {// 将区级下拉列表的选项清空$county.empty();$county.append(`<option value="">---</option>`);// 获取到所选择的城市的⽂本信息var cityElementName = $(this).children("option:selected").text();// console.log(cityElementName);$.each(json, function (index, obj) {// 获取该省对应的所有的城市信息var cities = obj.cities;// console.log(cities);$.each(cities, function (index, cityObj) {// console.log(cityObj.city);var cityName = cityObj.city;if (cityElementName === cityName) {// 获取到区级数组集合// console.log(cityObj.counties);var counties = cityObj.counties;// 遍历区级数组集合$.each(counties, function (index, value) {// 获取到区级名称// console.log(value);// 将该城市对应的区级名称添加到对应的select元素中$county.append(`<option value="${value}">${value}</option>`);});}});});});});</script></body></html>效果如下以上就是本⽂的全部内容,希望对⼤家的学习有所帮助,也希望⼤家多多⽀持。

strsts2+ajax三级联动

strsts2+ajax三级联动

Jsp页面:<%@ page language="java" import="java.util.*" pageEncoding="UTF-8"%> <%@ taglib uri="/struts-tags" prefix="s"%><!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"><html><head><title>单位类别</title><style type="text/css">body,td,th {font-size: 12px;}</style><script type="text/javascript">var xmlHttp;function createXmlHttpRequest(){if(window.XMLHttpRequset){xmlHttp = new XMLHttpRequest();}else if(window.ActiveXObject){xmlHttp = new ActiveXObject("Microsoft.XMLHTTP");}}f unction Liandong(x,y){createXmlHttpRequest();var ld2=document.getElementById("dwlb2");if(y=="1" && ld2!=null){var len = ld2.options.length;for (var i=1; i < len; i++){ld2.options[i] = null;}ld2.options[0].disabled;}var url="changeSelect.action?liandong="+x+"&jishu="+y;xmlHttp.open("GET",url,true);xmlHttp.onreadystatechange=callback;xmlHttp.send(null);}f unction callback(){i f(xmlHttp.readyState == 4){if(xmlHttp.status == 200){var v = xmlHttp.responseText;var v=xmlHttp.responseText;var liandong=v.substring(0,1);v=v.substring(1,v.length);if(liandong=='0'){document.getElementById("liandong").innerHTML=v;}if(liandong=='1'){document.getElementById('d1').style.display="none";document.getElementById('liandong1').style.display="block";document.getElementById("liandong1").innerHTML=v;}if(liandong=='2'){document.getElementById('d2').style.display="none";document.getElementById("liandong2").innerHTML=v;document.getElementById('liandong2').style.display="block";}}}}function fanhui(){hasClosed = true;var ld0=document.getElementById("dwlb0");var ld1=document.getElementById("dwlb1");var ld2=document.getElementById("dwlb2");var ld0text="";var ld1text="";var ld2text="";if(ld0.value=='-1'){alert("请选择单位级别一级!");return false;}var obj = new Object();if(ld1==null && ld2==null){=ld0.options[ld0.selectedIndex].text;obj.value=ld0.value;}else if(ld1!=null && ld2==null){if(ld1.value!='-1'){=ld1.options[ld1.selectedIndex].text;obj.value=ld1.value;}else{=ld0.options[ld0.selectedIndex].text;obj.value=ld0.value;}}else if(ld1!=null && ld2!=null){if(ld1.value!='-1' && ld2.value=='-1'){=ld1.options[ld1.selectedIndex].text;obj.value=ld1.value;}else if(ld1.value!='-1' && ld2.value!='-1'){=ld2.options[ld2.selectedIndex].text;obj.value=ld2.value;}else if(ld1.value=='-1' && ld2.value=='-1'){=ld0.options[ld0.selectedIndex].text;obj.value=ld0.value;}}}</script></head><body bgcolor="#E6EFF8" onload="Liandong('000000','0')"> <br><table width="99%" border="0" align="center" cellpadding="2" cellspacing="1" bgcolor="#aaccf0"><tr align="center" bgcolor="#ffffff"><td width="30%"><s:property value=""/>单位类别一级:</td><td align="left"><div id="liandong"></div></td></tr><tr align="center" bgcolor="#ffffff"><td width="30%">单位类别二级:</td><td align="left"><div id="liandong1" style="display: none"></div><select name="d1" style="width: 150px;" id="d1"><option value="-1">--请选择--</option></select></td></tr><tr align="center" bgcolor="#ffffff"><td width="30%">单位类别三级:</td><td align="left"><div id="liandong2" style="display: none"></div><select name="d2" style="width: 150px;" id="d2"><option value="-1">--请选择--</option></select></td></tr></table></body></html>Struts2 action类:public class ChangeSelectAction extends ActionSupport {private String liandong;private String jishu;private static final String CONTENT_TYPE= "text/html; charset=GBK";private List list;@SuppressWarnings("unchecked")@Overridepublic String execute() throws Exception {HttpServletResponse response =ServletActionContext.getResponse();HttpServletRequest request=ServletActionContext.getRequest();request.setCharacterEncoding("UTF-8");response.setContentType(CONTENT_TYPE);PrintWriter out=response.getWriter();SelectDicMap sdm=newSelectDicMap(XMLDictionaryTools.getXmlDictMap(),"hyfl");//从数据字典中取值。

基于jquery实现省市区三级联动效果

基于jquery实现省市区三级联动效果

基于jquery实现省市区三级联动效果本⽂实现更新了项⽬的省市区三级联动数据,更新后最新的海南三沙都有,分享给所有需要的⼩伙伴们。

JQUERY + JSON,⽆数据库,纯JS代码,⽆加密,⽆压缩,可直接使⽤在任何项⽬中。

说明:数据来源于国家统计局官⽹。

先上图:绑定省市区使⽤⽅法:1. 引⽤JQUERY<script type="text/javascript" src="/libs/jquery/1.11.1/jquery.min.js"></script>2. 引⽤省市区数据<script type="text/javascript" src="pdata.js"></script>3. HTML代码:<div class="row"><div class="col-sm-12"><div class="form-group"><label class="control-label col-sm-2">所在区域</label><div class="col-sm-3"><select name="input_province" id="input_province" class="form-control"></select></div><div class="col-sm-3"><select name="input_city" id="input_city" class="form-control"></select></div><div class="col-sm-3"><select name="input_area" id="input_area" class="form-control"></select></div></div></div></div>4. JS代码:$(function () {var html = "<option value=''>== 请选择 ==</option>"; $("#input_city").append(html); $("#input_area").append(html);$.each(pdata,function(idx,item){if (parseInt(item.level) == 0) {html += "<option value='" + s + "' exid='" + item.code + "'>" + s + "</option>";}});$("#input_province").append(html);$("#input_province").change(function(){if ($(this).val() == "") return;$("#input_city option").remove(); $("#input_area option").remove();var code = $(this).find("option:selected").attr("exid"); code = code.substring(0,2);var html = "<option value=''>== 请选择 ==</option>"; $("#input_area").append(html);$.each(pdata,function(idx,item){if (parseInt(item.level) == 1 && code == item.code.substring(0,2)) {html += "<option value='" + s + "' exid='" + item.code + "'>" + s + "</option>";}});$("#input_city").append(html);});$("#input_city").change(function(){if ($(this).val() == "") return;$("#input_area option").remove();var code = $(this).find("option:selected").attr("exid"); code = code.substring(0,4);var html = "<option value=''>== 请选择 ==</option>";$.each(pdata,function(idx,item){if (parseInt(item.level) == 2 && code == item.code.substring(0,4)) {html += "<option value='" + s + "' exid='" + item.code + "'>" + s + "</option>"; }});$("#input_area").append(html);});//绑定$("#input_province").val("⼴东省");$("#input_province").change();$("#input_city").val("深圳市");$("#input_city").change();$("#input_area").val("罗湖区");});源码下载:以上就是本⽂的全部内容,希望对⼤家的学习有所帮助。

Struts2+JQuery+JSON集成

Struts2+JQuery+JSON集成

Struts2+JQuery+JSON集成各位搞java的兄弟们,小弟搞了一个上午加中午,终于搞出用ajax传输json数据了,下面完完全全的将我遇到困难和配置给贴出来!!结合/fengda2870/article/details/4052527这篇文章,慢慢的搞出来点击“点我看看”按钮后,用jquery取得venus和password,用ajax传输到后台,处理,将处理后的数据,返回并显示在页面上1、新建web工程2、导入strust2的jar包(易错)3、导入struts2里相关的json的包(2个)4、要下载个处理json的库,(网上很多)/json的官网(里面有这些链接)推荐google的gson和json发明者自己写的类(我这里用的是json发明者自己的写的类)5、工程目录结构(红色框内重点!)6、web.xml里写7、struts2.xml里写(!!!!很容易出错,注意)8、Action类packagecom.zyn.action;importjava.util.ArrayList;importjava.util.List;import org.apache.struts2.ServletActionContext; importorg.json.JSONObject;import com.opensymphony.xwork2.ActionSupport; er;public class Test extends ActionSupport{private User user;private String result;public String getResult(){return result;}public void setResult(String result){this.result = result;}public User getUser() {return user;}public void setUser(User user) {er = user;}public static void main(String[] args){List<String> list = new ArrayList<String>();for (String string : list){System.out.println(string);}System.out.println("---------------");}public String test(){System.out.println("---------");String[] checkbox = ServletActionContext.getRequest().getParameterValues("checkbox");for (String string : checkbox){System.out.println(string);}return SUCCESS;}public String mytest1(){System.out.println(user.getName());System.out.println(user.getPassword());//将要返回的user实体对象进行json处理JSONObjectjo= newJSONObject(user);//打印一下,格式如下//{"name":"风达","age":23}System.out.println(jo);//调用json对象的toString方法转换为字符串然后赋值给resultresult = jo.toString();return SUCCESS;}}9、user类packagecom.zyn.pojo;public class User{private String name;private String password;public String getName(){return name;}public void setName(String name){ = name;}public String getPassword(){return password;}public void setPassword(String password){this.password = password;}}10、相应的jsp页面(页面要用到jquery,需要去网上下载)<script type="text/javascript" src="./js/jquery-1.6.4.js"></script><script type="text/javascript">$(function(){$("#button1").click(function(){$.ajax({type: "POST",url: "jsontest",dateType: "json",data: {"": $("#1").val(), "user.password": $("#2").val()},success: function(returnedData){var json = eval( "("+returnedData+")" );var str = "姓名:" + + "<br />"; str += "密码:"+ json.password + "<br />";$("#3").html(str);}});});});</script></head><body><input type="text" id="1" value="venus"><br/><input type="text" id="2" value="password"><br/><div id="3"><br/><input type="button" value="点我看看" id="button1">11、测试:点击后:期间碰到个问题!HTTP Status 404 - There is no Action mapped for action name网上搜了一大堆,但还是不对,struts2.xml里没有写错,解决:变了下action的名字,相应的修改struts2.xml的action名字,就可以了,奇怪啊下面是那篇文章的内容:导入包列表:目录结构如图:2.建立实体类User//将要返回的user实体对象进行json处理JSONObject jo = JSONObject.fromObject(er);//打印一下,格式如下//{"name":"风达","age":23}System.out.println(jo);//调用json对象的toString方法转换为字符串然后赋值给resultthis.result = jo.toString();return this.SUCCESS;}}4.建立struts.xml文件<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE struts PUBLIC"-//Apache Software Foundation//DTD Struts Configuration 2 .0//EN""/dtds/struts-2.0.dtd"> <struts><constant name="struts.i18n.encoding" value="UTF-8"></constant ><package name="ttttt" extends="json-default"><action name="jsonAction" class="action.JsonAction"><result type="json" ><!-- 因为要将reslut的值返回给客户端,所以这样设置 --><!-- root的值对应要返回的值的属性 --><param name="root">result</param></result></action></package></struts>5.编写index.jsp文件<%@ page language="java" pageEncoding="UTF-8"%><%@ taglib prefix="s" uri="/struts-tags"%><%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%>"><title>My JSP 'index.jsp' starting page</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,keyword 3"><meta http-equiv="description" content="This is my page"><!-- basePath用来获取js文件的绝对路径 --><script type="text/javascript" src="<%=basePath%>js/jquery.js" ></script><script type="text/javascript" src="<%=basePath%>js/index.js"></script><s:head theme="ajax" /></head><body><div id="result"></div><s:form name="userForm" action="" method="post"><s:textfield label="用户名" name="" /><s:textfield label="年龄" name="user.age" /><button>提交</button></s:form></body></html>6.在WebRoot目录下建立js文件件,将jquery.js文件放到文件夹下,然后再建立文件index.js$(document).ready(function() {// 直接把onclick事件写在了JS中$("button").click(function() {// 序列化表单的值var params = $("input").serialize();$.ajax({// 后台处理程序url : "jsonAction.action",// 数据发送方式type : "post",// 接受数据格式dataType : "json",// 要传递的数据data : params,// 回传函数success : update_page});});});function update_page(result) {var json = eval( "("+result+")" );var str = "姓名:" + + "<br />"; str += "年龄:"+ json.age + "<br />";$("#result").html(str);}7.运行前效果:要的是效果,布局就不整了运行后效果:网上相关的信息太少了,很多Struts2+JQuery+JSON的教程,点开链接之后都是那几篇文章转了又转,遇到问题真的很想找到有用的信息,或许是我太笨了,找不到,或许就是网上相关的信息就很少。

Struts2+json+jQuery+ajax实现对象集合的异步交互

Struts2+json+jQuery+ajax实现对象集合的异步交互

Struts2+json+jQuery+ajax实现对象/集合的异步交互一、准备工作1,jar包支持(json类与java类转换支持jar包)Struts2支持json的jar包(自动挡已融入)2、Js文件(自行在网上下载)所需工具类JsonUtil.java(转换代码附在文档结尾)二,配置文件<package name="default"namespace="/"extends="json-default"><action name="select"class="action.JsonAction"><result type="json"><param name="root">result</param></result></action></package>三、案例项目结构1、传递person与action的异步交互function abc(){person={id:1,name:"X三",addess:"XX市武昌区"};$.ajax({type : "POST",url : "select.action",data : "name="+JSON.stringify(person),// stringify(),json.js文件所提供的将json对象转换成json格式的字符串success : function(result) {alert(result);var person2=eval("("+result+")");$("#info").html();}});}</script></head><body>action传到前台的person2对象的XX:<div id="info"></div><input type="button"value="提交"onclick="abc();"/></body>Person类实现set/get方法(已省略,请自行添加)privateint id;JsonAction.java启动tomcat之后的效果前台页面控制台function abc(){person=[{id:1,name:"X三",addess:"XX市武昌区"},{id:2,name:"小明",addess:"A市B区"},]$.ajax({type : "POST",url : "select.action",data : "name="+JSON.stringify(person),// stringify(),json.js文件所提供的将json对象转换成json格式的字符串success : function(result) {alert(result);var list=eval("("+result+")");//$("#info").html(list [0].name);}});}</script>List<Person> list=JsonUtil.getList4Json(name, Person.class); (API参考附录)List<Person>集合转换为json格式的字符串(list json格式字符串)result=JsonUtil.getJsonString4List(list);(API参考附录)注:后台action传到前台的是json格式的字符串,并非json对象(见“控制台”图例),在前台需用eval()函数解析为json对象实例:var String=eval("("+result+")");Map集合、Array数组转换方式与上述案例基本类似,格式请参考(JSON.pdf)一书(请自行在网络下载)附录:JsonUtil.java工具转换类(代码来源于网络)。

三级联动模板

三级联动模板

三级联动模板三级联动模板通常用于创建三个级别的联动效果,例如省市区三级联动。

以下是一个简单的三级联动模板示例:```html<!DOCTYPE html><html><head><title>省市区三级联动</title><script src="</head><body><select id="province"><option value="">请选择省份</option></select><select id="city"><option value="">请选择城市</option></select><select id="county"><option value="">请选择县区</option></select><script type="text/javascript">$(document).ready(function() {// 获取省份数据,填充省份下拉框var provinceData = [{ name: '省份1', cities: ['城市1', '城市2'] },{ name: '省份2', cities: ['城市3', '城市4'] },// 其他省份数据...];$.each(provinceData, function(index, item) {$('province').append('<option value="' + index + '">' + +'</option>');});// 省份选择变化事件,根据选择的省份获取对应城市数据,填充城市下拉框$('province').change(function() {var selectedProvinceIndex = $(this).val();var cities = provinceData[selectedProvinceIndex].cities;$('city').empty();$.each(cities, function(index, city) {$('city').append('<option value="' + index + '">' + city +'</option>');});});// 城市选择变化事件,根据选择的城市获取对应县区数据,填充县区下拉框$('city').change(function() {var selectedCityIndex = $(this).val();var counties =provinceData[$('province').val()].cities[selectedCityIndex];$('county').empty();$.each(counties, function(index, county) {$('county').append('<option value="' + index + '">' + county + '</option>');});});});</script></body></html>```这个模板中使用了jQuery库来实现省市区三级联动的功能。

jQueryajax实现省市县三级联动

jQueryajax实现省市县三级联动

jQueryajax实现省市县三级联动本⽂我们⽤Jquery,ajax,做⼀个省,市,县的三级联动:下⾯是我做三级联动下拉的步骤以及逻辑第⼀步:先做⼀个省市区表格第⼆步:建个PHP页⾯显⽰⽤我是在<body>⾥放<div>⽤来接收要显⽰的省市区表格信息,⾥⾯嵌⼊jquery-1.11.2.min.js和⾃⼰封装的三联动省市区的⽅法第三步:写封装⽅法⽤JS第四步:做个纯php处理页⾯,这个页⾯处理传过来的任何代号⾸先我们要建⽴数据库:这就是包含省,市,县的数据库。

下⾯我们就写主页⾯:sanji.php:<!doctype html><html lang="en"><head><meta charset="UTF-8" /><title>Document</title><script src="jquery-1.11.2.min.js"></script><script src="sanjiliandong.js"></script></head><body><div id="sanjiliandong"><!--在这⾥使⽤三级联动插件--></div></body></html>然后就是js⽂件:// JavaScript Document$(document).ready(function(e){//向div⾥⾯仍三个下拉var str = "<select id='sheng'></select><select id='shi'></select><select id='qu'></select>";$("#sanjiliandong").html(str);//三个下拉显⽰//当省选中的话市也会跟着变去也会变。

jQuery插件实现多级联动菜单效果

jQuery插件实现多级联动菜单效果

jQuery插件实现多级联动菜单效果开发中,有好多地⽅⽤到联动菜单,以前每次遇到联动菜单的时候都去重新写,代码重⽤率很低,前⼏天⼜遇到联动菜单的问题,总结了下,发现可以开发⼀个联动菜单的功能,以后想⽤的时候就⽅便多了。

项⽬中每个页⾯都有引⽤jQuery,,开发个jQuery联动菜单插件,说动⼿就动⼿,下⾯跟⼤家分享分享。

我⽤的jQuery插件⽅式(function($){$.fn.casmenu=function(argvs){//your code}})(jQuery);其中jQuery传⼊的是jquery对象,需要在扩展之前引⽤。

在扩展中同样使⽤jQuery的短格式$。

$.fn是指jquery的命名空间,加在fn上的⽅法及属性,会对jquery实例每⼀个有效,看看下⾯的jquery源码101⾏左右:jQuery.fn = jQuery.prototype = {......}⽐如说后⾯要开发的$.fn.casmenu(),定义之后,在后⾯的jquery对象都可以使⽤该⽅法。

这⾥还有⼀种扩展的⽅法:$.extend({funName: function(){//your code},});这种扩展⽅法和上⾯的是有区别的,要是拿类做类⽐的话,$.extend这种⽅法相当于类中的静态⽅法,上⾯的⼀种⽅式相当于⾮静态⽅法,必须有对象才可以使⽤。

简单的理解,是下⾯这样的://$.fn.casemenu ⽅式扩展的⽅法,必须在有jquery对象的时候才可以使⽤$("#mydiv").casmenu();//$.extend({}) ⽅式扩展的⽅法,可以直接使⽤$.add(2,3);设计思路⾸先是层级菜单的数据保存⽅式,看看下⾯的数据:var levels={//内容中有引号,必须使⽤单引号,外引号必须⽤双引号//name => value1:{退出应⽤: "code1003",登录界⾯:"code1004",跳转⾄个⼈资料界⾯:"code1005",},2:{退出应⽤:{应⽤1:"gameid1",应⽤2:"gameid2",应⽤3:"gameid3",应⽤4:"gameid4",应⽤5:"gameid5",},跳转⾄个⼈资料界⾯:{主界⾯:"main interface",}},3:{应⽤1:{中级场:"12",⾼级场:"13",职业场:"14",⽐赛场:"15",}}}对象levels中的直接键值1、2、3代表菜单的层级,没有就不⽤些,每⼀项name=>value代表select中option的名称和value。

三级联动的工作原理

三级联动的工作原理

三级联动的工作原理
三级联动是指基于地理位置的多级分类筛选系统,它的工作原理如下:
1. 建立地理位置数据:首先,系统需要建立一个包含各个地理位置的数据集。

这个数据集可以包含国家、省/州、市、区等不同级别的地理位置,并且可以根据实际需求进行扩展和维护。

2. 用户选择地理位置:当用户进入系统时,系统会提供一个包含地理位置的选择菜单,用户可以通过选择菜单中的选项来指定所感兴趣的地理位置。

3. 根据用户选择进行筛选:当用户选择了一个地理位置后,系统会根据用户的选择,将符合该地理位置的数据进行筛选,并显示给用户。

4. 进一步细化筛选:系统还可以根据用户的选择提供进一步的细化筛选菜单,让用户可以继续选择更详细的地理位置,以进一步缩小筛选范围。

5. 最终结果呈现:当用户完成地理位置的选择后,系统会根据用户的选择将最终符合要求的数据结果展示给用户。

通过上述工作原理,三级联动系统能够根据用户的选择,准确地呈现符合用户要求的地理位置数据,从而帮助用户进行地理位置相关的查询和筛选。

struts2 json jquery 集成详解

struts2 json jquery 集成详解
"/dtds/struts-2.0.dtd">
<struts>
<package name="sajax" extends="json-default" namespace="/book">
<action name="getAjaxBookChannelList" method="getAjaxBookChannelList" class="bookChannelAction">
<struts>
<package name="json-default" extends="struts-default">
<result-types>
<result-type name="json" class="com.googlecode.jsonplugin.JSONResult"/>
}
strAjaxChannel = sb.toString();//返回的数据
return Action.SUCCESS;
}
4页面操作。Jquery中已经提供几供ajax请求的方法,如果返回的是json对象,使用jQuery.getJSON(url,[data],[callback])会比较方便,
object (Object) : 需要例遍的对象或数组。
callback (Function) : (可选) 每个成员/元素执行的回调函数。
回调函数拥有两个参数:第一个为对象的成员或数组的索引,第二个为对应变量或内容。

JQuery+Json省市区三级联动

JQuery+Json省市区三级联动
登录后才能查看或发表评论立即登录或者逛逛博客园首页
JQuery+Json省 市 区 三 级 联 动
一、画面以及JS
<!DOCTYPE html> <head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" /> <title>省市区三级联动[JSON+Jquery]</title> <!--<script src="js/jquery-1.8.3.min.js" type="text/javascript"></script>--> <!--<script src="js/jquery-1.10.2.min.js"></script>--> <!--<script src="js/jquery-1.9.1.min.js"></script>--> <script src="js/jquery-1.8.0.min.js"></script> <script src="AraeDataJson/CityJson.js" type="text/javascript"></script> <script src="AraeDataJson/ProJson.js" type="text/javascript"></script> <script src="AraeDataJson/DistrictJson.js" type="text/javascript"></script> <script type="text/javascript">

jQuery实现三级联动

jQuery实现三级联动

jQuery实现三级联动<!DOCTYPE html><html><head><meta http-equiv="Content-Type" content="text/html; charset=utf-8"/><title></title><meta charset="utf-8"/><script src="/jquery/2.0.0/jquery.js"></script><style type="text/css">body {font-size:13px;text-align:center;}div {width:400px;border:1px solid #000000;background-color:#f5e8e8;margin:100px 300px;padding:10px;}</style><script type="text/javascript">$(function () {function Init(node) {return node.html("<option>---请选择---</option>");} //多维数组做数据来源var db = {腾讯: {LOL: "德玛,EZ瑞尔,剑圣",BNS: "⽓功师,⼒⼠,刺客,⽓宗师",DNF:"A,B,C,D"},阿⾥巴巴: {APPLAY: "AL,EZ瑞尔,剑圣",HUABEI: "AL,⼒⼠,刺客,⽓宗师",JIEBEI: "AL,B,C,D"},百度: {ggs: "BD,EZ瑞尔,剑圣",BD: "BD,⼒⼠,刺客,⽓宗师",BDBD: "BD,B,C,D",}}; //初始化select节点$.each(db, function (changShang) {$("#selF").append("<option>" + changShang + "</option>");})//⼀级变动$("#selF").change(function () {//清空⼆三级Init($("#selB"));Init($("#selC"));$.each(db,function (cs,pps) {if ($("#selF option:selected").text() == cs) {$.each(pps, function (pp, xhs) {$("#selB").append("<option>" + pp + "</option>");});$("#selB").change(function () {Init($("#selC"));$.each(pps, function (pp,xhs) {if ($("#selB option:selected").text()==pp) {$.each(xhs.split(','), function () {$("#selC").append("<option>" + this + "</option>");})}})})}})})})</script></head><body><div class="bg-primary"><hr />企业:<select id="selF"><option>---请选择---</option></select>产品:<select id="selB"><option>---请选择---</option></select>嗯嗯:<select id="selC"><option>---请选择---</option> </select><p id="pid"></p></div></body></html>。

jQuery实现三级联动

jQuery实现三级联动

jQuery实现三级联动代码如下<!DOCTYPE html><html><head><meta http-equiv="content-type" content="text/html;charset=utf-8"/><meta http-equiv="Content-Type" content="text/html; charset=utf-8" /><title>三级联动</title><script src="../bootstrap/js/jquery-1.11.2.min.js"></script></head><body><select id="sheng"></select><select id="shi"></select><select id="qu"></select></body><script type="text/javascript">$(document).ready(function(e) {loadsheng();loadshi();loadqu();$("#sheng").click(function() {loadshi();loadqu();})$("#shi").click(function() {loadqu();})})function loadsheng() {var pcode = "0001";$.ajax({type: "POST",url: "sanjichuli.php",async: false,data: { pcode: pcode },dataType: "TEXT",success: function(data) {//alert(data);var hang = data.split("|");var str = "";for(var i = 0; i < hang.length; i++) {var lie = hang[i].split("^");str = str + "<option value='" + lie[0] + "'>" + lie[1] + "</option>";}$("#sheng").html(str);}});}function loadshi() {var pcode = $("#sheng").val();$.ajax({type: "POST",url: "sanjichuli.php",async: false,data: { pcode: pcode },dataType: "TEXT",success: function(data) {var hang = data.split("|");var str = "";for(var i = 0; i < hang.length; i++) {var lie = hang[i].split("^");str = str + "<option value='" + lie[0] + "'>" + lie[1] + "</option>";}$("#shi").html(str);}});}function loadqu() {var pcode = $("#shi").val();$.ajax({type: "POST",url: "sanjichuli.php",async: false,data: { pcode: pcode },dataType: "TEXT",success: function(data) {var hang = data.split("|");var str = "";for(var i = 0; i < hang.length; i++) {var lie = hang[i].split("^");str = str + "<option value='" + lie[0] + "'>" + lie[1] + "</option>"; }$("#qu").html(str);}});}</script></html>处理界⾯代码<?phpinclude("../DBDA.class.php");$db = new DBDA();$pcode = $_POST["pcode"];$sql = "select * from chinastates where parentareacode='{$pcode}'";echo$db->strquery($sql,1);实现效果如下。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

action代码view plaincopy to clipboardprint?1. p ublic class BindAction extends BaseAction{2.3.4. public String bindPro(){5. List<TDictProvince>list=this.loanInfoService.getProlist();6. if(list.size()>0){7. StringBuilder sb= new StringBuilder();8. int size=list.size();9. sb.append("[");10. for (TDictProvince pro : list) {11. size--;12. sb.append("{provinceid:/"");13. sb.append(pro.getProvinceid());14. sb.append("/",provincename:/"");15. sb.append(pro.getProvincename());16. sb.append("/"}");17. if(size>0){18. sb.append(",");19. }20. }21. sb.append("]");22. proString=sb.toString();23.24. }25. return SUCCESS;26. }27. public String bindCit() {28. List<TDictCity>list=this.loanInfoService.getCitylistByProId(proId);29. if(list.size()>0){30. StringBuilder sb= new StringBuilder();31. int size=list.size();32. sb.append("[");33. for (TDictCity pro : list) {34. size--;35. sb.append("{cityid:/"");36. sb.append(pro.getCityid());37. sb.append("/",cityname:/"");38. sb.append(pro.getCityname());39. sb.append("/"}");40. if(size>0){41. sb.append(",");42. }43. }44. sb.append("]");45. citString=sb.toString();46. System.out.println();47. }48.49. return SUCCESS;50. }51. public String bindAre() {52. List<TDictregion>list=this.loanInfoService.getArealistByCitId(citId);53. if(list.size()>0){54. StringBuilder sb= new StringBuilder();55. int size=list.size();56. sb.append("[");57. for (TDictregion pro : list) {58. size--;59. sb.append("{regionid:/"");60. sb.append(pro.getRegionid());61. sb.append("/",regionname:/"");62. sb.append(pro.getRegionname());63. sb.append("/"}");64. if(size>0){65. sb.append(",");66. }67. }68. sb.append("]");69. areString=sb.toString();70. }71.72. return SUCCESS;73. }74. public String bindBank() {75. List<TDictBankOutlets>list=this.loanInfoService.getBanklistByareId(areId);76. if(list.size()>0){77. StringBuilder sb= new StringBuilder();78. int size=list.size();79. sb.append("[");80. for (TDictBankOutlets bank : list) {81. size--;82. sb.append("{bankid:/"");83. sb.append(bank.getBankid());84. sb.append("/",bankname:/"");85. sb.append(bank.getBankname());86. sb.append("/"}");87. if(size>0){88. sb.append(",");89. }90.91. }92. sb.append("]");93. bankString=sb.toString();94. }95.96. return SUCCESS;97. }98. private String proString;99. private String citString;100. private String areString;101. private String bankString;102. private String proId;103. private String citId;104. private String areId;105. private LoanInfoService loanInfoService;106. @JSON(name="Pros")107. public String getProString() {108. return proString;109. }110. public void setProString(String proString) {111. this.proString = proString;112. }省略了其他的简单的getter 和setter有一个需要注意的地方就是@JSON(name="Pros") 这个是指定json对象的属性名@JSON(serialize=false)方法阻止序列序列化action中json不用的属性,如service,否则会报错:com.googlecode.jsonplugin.JSONException: ng.reflect.InvocationTargetException 页面代码:view plaincopy to clipboardprint?1. <SPAN>2. <select id="pro"onchange="getPro(this,'cit','are','bank')"style="width:100px;">3. <option value="-1">请选择省</option>4. </select>5. </SPAN>6. <SPAN>7. <select id="cit"onchange="getCit(this,'are','bank')"style="width:100px;">8. <option value="-1">请选择城市</option>9. </select>10. </SPAN>11. <span>12. <select id="are"style="width:100px;"name="einfo.TDictregion.regionid">13. <option value="-1">请选择地区</option>14. </select>15. </span>js代码:view plaincopy to clipboardprint?1. $(document).ready( function() {2. $.getJSON("bindProAction.action",function(json){3. //必须用eval把字符串转换成json4. var data=eval(json.Pros);5. // 遍历json对象6. for ( var prod in data) {7. // 临时变量判断循环次数8. var flag = 0;9. var option = document.createElement("option");10. // json对象中的一个元素11. for ( var key in data[prod]) {12. // 创建一个option13. document.getElementById("pro").appendChild(option);14. if (flag == 0) {15. option.value = data[prod][key];16. flag++;17. } else {18. option.text = data[prod][key];19. flag = 0;20. }21.23. }24. });25. });26.27. function getPro(obj,cid,aid,bid) {28. // 绑定之前清空第一个以外的option29. $("#"+cid).children().eq(0).siblings().remove();30. $("#"+aid).children().eq(0).siblings().remove();31. $("#"+bid).children().eq(0).siblings().remove();32. var temp = obj.value;33. // $("#pro").find("option:selected").val();34. $.ajax( {35. url : "bindCitAction.action",36. type : "get",37. dataType : "json",38. data : "proId=" + temp,39. success : function(json){40. data = eval(json.citString);41. for ( var cit in data) {42. // 临时变量判断循环次数43. var flag = 0;44. var option = document.createElement("option");45. // json对象中的一个元素46. for ( var key in data[cit]) {47. // 创建一个option48. document.getElementById(cid).appendChild(option);49. if (flag == 0) {50. option.value = data[cit][key];51. flag++;52. } else {53. option.text = data[cit][key];54. flag = 0;55. }56.58. }59.60. }61. });62. }63. function getCit(obj,aid,bid) {64. // 绑定之前清空第一个以外的option65. $("#"+aid).children().eq(0).siblings().remove();66. $("#"+bid).children().eq(0).siblings().remove();67. var temp = obj.value;68. // $("#cit").find("option:selected").val();69. $.ajax( {70. url : "bindAreAction.action",71. type : "get",72. dataType : "json",73. data : "citId=" + temp,74. success : function(json){75. data = eval(json.areString);76. for ( var are in data) {77. // 临时变量判断循环次数78. var flag = 0;79. var option = document.createElement("option");80. // json对象中的一个元素81. for ( var key in data[are]) {82. // 创建一个option83. document.getElementById(aid).appendChild(option);84. if (flag == 0) {85. option.value = data[are][key];86. flag++;87. } else {88. option.text = data[are][key];89. flag = 0;90. }91.93. }94. }95. });96. }97. function getBank(obj,bid){98. // 绑定之前清空第一个以外的option99. $("#"+bid).children().eq(0).siblings().remove();100. var temp = obj.value;101. $.ajax( {102. url : "bindBankAction.action",103. type : "get",104. dataType : "json",105. data : "areId=" + temp,106. success : function(json){107. data = eval(json.bankString);108. for ( var bank in data) {109. // 临时变量判断循环次数110. var flag = 0;111. var option = document.createElement("option");112. // json对象中的一个元素113. for ( var key in data[bank]) {114. // 创建一个option115. document.getElementById(bid).appendChild(option); 116. if (flag == 0) {117. option.value = data[bank][key];118. flag++;119. } else {120. option.text = data[bank][key];121. flag = 0;122. }123.124. }125. }126. }128. }有一个需要注意的地方:var data=eval(json.Pros);把字符串转换成json对象,不然遍历的时候就会一个字符一个字符的遍历.。

相关文档
最新文档