JQuery Ajax三级联动地区下拉框

 

JSP部分代码

<script src="/js/jquery-1.2.6.min.js" type="text/javascript"></script>
<script>
//
为了避免 jquery中的'$'与其它的'$'冲突,在此将jquery中的'$'重命名为'jQuery'
var jQuery=$;
</script>

<script>


//
初始化数据
jQuery(document).ready(function(){

getProvince();

});



//
取所有省份
function getProvince(){

    //&callback=?"注意这个是为了解决跨域访问 的问题   
var url ="http://www.yimei.com/shopcar/getAreaJSON?areaId=0&callback=?";

jQuery.getJSON(url,null,function call(result){  
setProvince(result);
});

//
显示或隐藏激活卡
jQuery("#actionCardChk").click(function(){
if(jQuery("#actionCardChk").attr("checked")==true){
jQuery("#actionCardDiv").show();
}else{
jQuery("#actionCardDiv").hide();
}
});

//
显示或隐藏新增常用地址
jQuery("#addressChk").click(function(){
if(jQuery("#addressChk").attr("checked")==true){
jQuery("#addressDiv").show();
}else{
jQuery("#addressDiv").hide();
}
});


}




//
设置省份
function setProvince(result){

var province = document.getElementById("toProvince");

jQuery.each(result.data, function(i, area){
var value = area.id;
var text = area.name;
var option = new Option(text,value);
province.options.add(option);

});

}


//
按上级ID取子地区
function getArea(name){

if( name=='city' ){
clearSel(document.getElementById("toCity")); //
清空城市
var province = document.getElementById("toProvince");
if(province.options[province.selectedIndex].value == "") return;
var areaId = province.options[province.selectedIndex].value;

var url ="http://www.yimei.com/shopcar/getAreaJSON?areaId="+areaId+"&callback=?";
jQuery.getJSON(url,null,function call(result){  
setCity(result);
});

}else if( name=='county'){
clearSel(document.getElementById("toCounty")); //
清空城区
var city = document.getElementById("toCity");
if(city.options[city.selectedIndex].value == "") return;
var areaId = city.options[city.selectedIndex].value;

var url ="http://www.yimei.com/shopcar/getAreaJSON?areaId="+areaId+"&callback=?";
jQuery.getJSON(url,null,function call(result){  
setCounty(result);
});

}
}

//
当改变省份时设置城市
function setCity(result){

var city = document.getElementById("toCity");

jQuery.each(result.data, function(i, area){
var value = area.id;
var text = area.name;
var option = new Option(text,value);
city.options.add(option);
});

}


//
当改变省份时设置城市
function setCounty(result){

var county = document.getElementById("toCounty");

jQuery.each(result.data, function(i, area){
var value = area.id;
var text = area.name;
var option = new Option(text,value);
county.options.add(option);
});

}

//
清空下拉列表
function clearSel(oSelect){

while(oSelect.childNodes.length>0){
oSelect.removeChild(oSelect.childNodes[0]);
}

}

</script>

<tr>
<td height="28" colspan="3">
<select name="toProvince" id="toProvince" onChange="getArea('city')" class="STYLE5" onFocus="doOnFocus(this);">
<option value="" selected>
请选择省份...</option>
</select>         
</td>
</tr>

         <tr>
<td height="28" colspan="3">              
<select name="toCity" id="toCity" class="board" onChange="getArea('county')" onFocus="doOnFocus(this);">
<option value="">
请选择城市...</option>
</select>        
</td>

</tr>

<tr>
<td class="STYLE3">
<select name="toCounty" id="toCounty" class="board" οnfοcus="doOnFocus(this);">
<option value="">
请选择城区...</option>
</select>        
</td>
</tr>

JAVA部分代码 Servlet

response.setContentType("text/xml;charset=utf-8");
response.setHeader("Pragma","No-cache");
response.setDateHeader("Expires",0);
response.setHeader("Cache-Control","no-cache");    
PrintWriter out=response.getWriter();

   String areaId = request.getParameter("areaId");

if(areaId==null || areaId.trim().length()<=0){
//sb.append("<data><error>
系统错误地区id为空</error></data>");
//out.print(sb.toString());
return;
}  

//注意这个是为了解决跨域访问的问题
   String callback = request.getParameter("callback");   

try {

    List areaList = AreaService.getInstance().getAreasByParentId(Integer.parseInt(areaId));

    // 取集合
JSONArray jsonArray = JSONArray.fromObject(areaList);

    JSONObject jsobjcet = new JSONObject();

    jsobjcet.put("data", jsonArray);

response.getWriter().write(callback+"("+jsobjcet.toString()+");");

    log.info(callback+"("+jsobjcet.toString()+");");


} catch (IOException e) {
e.printStackTrace();
}

DAO部分代码

public List getAreasByParentId(int parentId) {
Connection conn=null;
Statement stm=null;
ResultSet rs=null;
List<AreaInfo> list = new ArrayList<AreaInfo>();
try{
conn = ConnectionPool.getConnection();
if( conn == null ) throw new Exception("DataBase connection error");
stm = conn.createStatement();
String sql ="select * from n_area where parent_id =" + parentId;
rs = stm.executeQuery(sql);
AreaInfo areaInfo = null;
while( rs.next() ) {
areaInfo= new AreaInfo();
areaInfo.setId(rs.getInt("id"));
areaInfo.setName(rs.getString("name"));
areaInfo.setParentId(rs.getInt("parent_id"));
list.add(areaInfo);
}
}catch(Exception e){
log.error("getAreasByParentId() error:"+e.getMessage());
}finally{
ConnectionPool.release(conn,stm,rs); //
释放资源
}
return list;
}

数据表结构

CREATE TABLE `n_area` (
`id` int(11) NOT NULL auto_increment,
`name` varchar(20) default NULL,
`parent_id` int(11) NOT NULL default '0',
PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=224 DEFAULT CHARSET=gbk;

记录

INSERT INTO `n_area` VALUES ('1', '广东省', '0');
INSERT INTO `n_area` VALUES ('2', '
北京', '0');
INSERT INTO `n_area` VALUES ('3', '
深圳市', '1');
INSERT INTO `n_area` VALUES ('4', '
广州市', '1');
INSERT INTO `n_area` VALUES ('5', '
北京五环以内', '2');
INSERT INTO `n_area` VALUES ('6', '
天津', '0');
INSERT INTO `n_area` VALUES ('7', '
天津市', '6');
INSERT INTO `n_area` VALUES ('14', '
珠海市', '1');
INSERT INTO `n_area` VALUES ('15', '
汕头市', '1');
INSERT INTO `n_area` VALUES ('16', '
佛山市', '1');
INSERT INTO `n_area` VALUES ('17', '
东莞市', '1');
INSERT INTO `n_area` VALUES ('22', '
肇庆市', '1');
INSERT INTO `n_area` VALUES ('23', '
惠州市', '1');
INSERT INTO `n_area` VALUES ('24', '
清远市', '1');
INSERT INTO `n_area` VALUES ('25', '
韶关市', '1');
INSERT INTO `n_area` VALUES ('26', '
湛江市', '1');
INSERT INTO `n_area` VALUES ('27', '
潮州市', '1');
INSERT INTO `n_area` VALUES ('28', '
梅州市', '1');
INSERT INTO `n_area` VALUES ('29', '
茂名市', '1');
INSERT INTO `n_area` VALUES ('30', '
浙江省', '0');
INSERT INTO `n_area` VALUES ('31', '
江苏省', '0');
INSERT INTO `n_area` VALUES ('32', '
福建省', '0');
INSERT INTO `n_area` VALUES ('33', '
广西省', '0');
INSERT INTO `n_area` VALUES ('34', '
江西省', '0');
INSERT INTO `n_area` VALUES ('35', '
山东省', '0');
INSERT INTO `n_area` VALUES ('36', '
湖南省', '0');
INSERT INTO `n_area` VALUES ('37', '
安徽省', '0');
INSERT INTO `n_area` VALUES ('38', '
贵州省', '0');
INSERT INTO `n_area` VALUES ('39', '
黑龙江省', '0');
INSERT INTO `n_area` VALUES ('40', '
辽宁省', '0');
INSERT INTO `n_area` VALUES ('41', '
四川省', '0');
INSERT INTO `n_area` VALUES ('42', '
湖北省', '0');
INSERT INTO `n_area` VALUES ('43', '
陕西省', '0');
INSERT INTO `n_area` VALUES ('44', '
河南省', '0');
INSERT INTO `n_area` VALUES ('45', '
山西省', '0');
INSERT INTO `n_area` VALUES ('46', '
海南省', '0');
INSERT INTO `n_area` VALUES ('47', '
杭州市', '30');
INSERT INTO `n_area` VALUES ('48', '
温州市', '30');
INSERT INTO `n_area` VALUES ('49', '
宁波市', '30');
INSERT INTO `n_area` VALUES ('50', '
台州市', '30');
INSERT INTO `n_area` VALUES ('51', '
南京市', '31');
INSERT INTO `n_area` VALUES ('52', '
无锡市', '31');
INSERT INTO `n_area` VALUES ('53', '
苏州市', '31');
INSERT INTO `n_area` VALUES ('54', '
常州市', '31');
INSERT INTO `n_area` VALUES ('55', '
徐州市', '31');
INSERT INTO `n_area` VALUES ('56', '
福州市', '32');
INSERT INTO `n_area` VALUES ('57', '
厦门市', '32');
INSERT INTO `n_area` VALUES ('58', '
泉州市', '32');
INSERT INTO `n_area` VALUES ('59', '
漳州市', '32');
INSERT INTO `n_area` VALUES ('60', '
南宁市', '33');
INSERT INTO `n_area` VALUES ('61', '
桂林市', '33');
INSERT INTO `n_area` VALUES ('62', '
柳州市', '33');
INSERT INTO `n_area` VALUES ('63', '
百色市', '33');
INSERT INTO `n_area` VALUES ('64', '
南昌市', '34');
INSERT INTO `n_area` VALUES ('65', '
赣州市', '34');
INSERT INTO `n_area` VALUES ('66', '
济南市', '35');
INSERT INTO `n_area` VALUES ('67', '
青岛市', '35');
INSERT INTO `n_area` VALUES ('68', '
长沙市', '36');
INSERT INTO `n_area` VALUES ('69', '
合肥市', '37');
INSERT INTO `n_area` VALUES ('70', '
贵阳市', '38');
INSERT INTO `n_area` VALUES ('71', '
哈尔滨市', '39');
INSERT INTO `n_area` VALUES ('72', '
大连市', '40');
INSERT INTO `n_area` VALUES ('73', '
成都市', '41');
INSERT INTO `n_area` VALUES ('74', '
武汉市', '42');
INSERT INTO `n_area` VALUES ('75', '
西安市', '43');
INSERT INTO `n_area` VALUES ('76', '
郑州市', '44');
INSERT INTO `n_area` VALUES ('77', '
太原市', '45');
INSERT INTO `n_area` VALUES ('78', '
海口市', '46');
INSERT INTO `n_area` VALUES ('79', '
中山市', '1');
INSERT INTO `n_area` VALUES ('80', '
顺德市', '1');
INSERT INTO `n_area` VALUES ('81', '
江门市', '1');
INSERT INTO `n_area` VALUES ('82', '
云浮市', '1');
INSERT INTO `n_area` VALUES ('83', '
阳江市', '1');
INSERT INTO `n_area` VALUES ('84', '
揭阳市', '1');
INSERT INTO `n_area` VALUES ('85', '
河源市', '1');
INSERT INTO `n_area` VALUES ('86', '
重庆', '0');
INSERT INTO `n_area` VALUES ('87', '
重庆市区', '86');
INSERT INTO `n_area` VALUES ('88', '
上海', '0');
INSERT INTO `n_area` VALUES ('89', '
上海市', '88');
INSERT INTO `n_area` VALUES ('91', '
北京五环以外', '2');
INSERT INTO `n_area` VALUES ('93', '
重庆郊区', '86');
INSERT INTO `n_area` VALUES ('94', '
河北省', '0');
INSERT INTO `n_area` VALUES ('95', '
石家庄市', '94');
INSERT INTO `n_area` VALUES ('96', '
保定市', '94');
INSERT INTO `n_area` VALUES ('97', '
邯郸市', '94');
INSERT INTO `n_area` VALUES ('98', '
张家口市', '94');
INSERT INTO `n_area` VALUES ('99', '
秦皇岛市', '94');
INSERT INTO `n_area` VALUES ('100', '
邢台市', '94');
INSERT INTO `n_area` VALUES ('101', '
唐山市', '94');
INSERT INTO `n_area` VALUES ('102', '
承德市', '94');
INSERT INTO `n_area` VALUES ('103', '
镇江市', '31');
INSERT INTO `n_area` VALUES ('104', '
绍兴市', '30');
INSERT INTO `n_area` VALUES ('105', '
嘉兴市', '30');
INSERT INTO `n_area` VALUES ('106', '
南通市', '31');
INSERT INTO `n_area` VALUES ('107', '
扬州市', '31');
INSERT INTO `n_area` VALUES ('108', '
连云港市', '31');
INSERT INTO `n_area` VALUES ('109', '
北海市', '33');
INSERT INTO `n_area` VALUES ('110', '
九江市', '34');
INSERT INTO `n_area` VALUES ('111', '
景德镇市', '34');
INSERT INTO `n_area` VALUES ('112', '
淄博市', '35');
INSERT INTO `n_area` VALUES ('113', '
烟台市', '35');
INSERT INTO `n_area` VALUES ('114', '
潍坊市', '35');
INSERT INTO `n_area` VALUES ('115', '
威海市', '35');
INSERT INTO `n_area` VALUES ('116', '
岳阳市', '36');
INSERT INTO `n_area` VALUES ('117', '
湘潭市', '36');
INSERT INTO `n_area` VALUES ('118', '
株洲市', '36');
INSERT INTO `n_area` VALUES ('119', '
衡阳市', '36');
INSERT INTO `n_area` VALUES ('120', '
常德市', '36');
INSERT INTO `n_area` VALUES ('121', '
滁州市', '37');
INSERT INTO `n_area` VALUES ('123', '
安庆市', '37');
INSERT INTO `n_area` VALUES ('124', '
遵义市', '38');
INSERT INTO `n_area` VALUES ('125', '
安顺市', '38');
INSERT INTO `n_area` VALUES ('126', '
六盘水市', '38');
INSERT INTO `n_area` VALUES ('127', '
沈阳市', '40');
INSERT INTO `n_area` VALUES ('128', '
鞍山市', '40');
INSERT INTO `n_area` VALUES ('129', '
攀枝花市', '41');
INSERT INTO `n_area` VALUES ('130', '
南充市', '41');
INSERT INTO `n_area` VALUES ('131', '
襄樊市', '42');
INSERT INTO `n_area` VALUES ('132', '
黄石市', '42');
INSERT INTO `n_area` VALUES ('133', '
汉中市', '43');
INSERT INTO `n_area` VALUES ('134', '
洛阳市', '44');
INSERT INTO `n_area` VALUES ('135', '
开封市', '44');
INSERT INTO `n_area` VALUES ('136', '
云南省', '0');
INSERT INTO `n_area` VALUES ('137', '
昆明市', '136');
INSERT INTO `n_area` VALUES ('138', '
丽江市', '136');
INSERT INTO `n_area` VALUES ('139', '
蚌埠市', '37');
INSERT INTO `n_area` VALUES ('140', '
南山区', '3');
INSERT INTO `n_area` VALUES ('141', '
其它区', '3');
INSERT INTO `n_area` VALUES ('143', '
市北区', '67');
INSERT INTO `n_area` VALUES ('213', '
西藏', '0');
INSERT INTO `n_area` VALUES ('178', '
甘肃省', '0');
INSERT INTO `n_area` VALUES ('179', '
兰州市', '178');
INSERT INTO `n_area` VALUES ('180', '
内蒙古', '0');
INSERT INTO `n_area` VALUES ('181', '
呼和浩特', '180');
INSERT INTO `n_area` VALUES ('182', '
吉林省', '0');
INSERT INTO `n_area` VALUES ('183', '
新疆省', '0');
INSERT INTO `n_area` VALUES ('184', '
新疆', '183');
INSERT INTO `n_area` VALUES ('185', '
吉林市', '182');
INSERT INTO `n_area` VALUES ('215', '
其他地区', '213');
INSERT INTO `n_area` VALUES ('187', '
其他地区', '1');
INSERT INTO `n_area` VALUES ('188', '
其他地区', '30');
INSERT INTO `n_area` VALUES ('189', '
其他地区', '31');
INSERT INTO `n_area` VALUES ('190', '
其他地区', '32');
INSERT INTO `n_area` VALUES ('191', '
其他地区', '33');
INSERT INTO `n_area` VALUES ('192', '
其他地区', '34');
INSERT INTO `n_area` VALUES ('193', '
其他地区', '35');
INSERT INTO `n_area` VALUES ('194', '
其他地区', '36');
INSERT INTO `n_area` VALUES ('195', '
其他地区', '37');
INSERT INTO `n_area` VALUES ('196', '
其他地区', '38');
INSERT INTO `n_area` VALUES ('197', '
其他地区', '39');
INSERT INTO `n_area` VALUES ('198', '
其他地区', '40');
INSERT INTO `n_area` VALUES ('199', '
其他地区', '41');
INSERT INTO `n_area` VALUES ('200', '
其他地区', '42');
INSERT INTO `n_area` VALUES ('201', '
其他地区', '43');
INSERT INTO `n_area` VALUES ('202', '
其他地区', '44');
INSERT INTO `n_area` VALUES ('203', '
其他地区', '94');
INSERT INTO `n_area` VALUES ('204', '
其他地区', '136');
INSERT INTO `n_area` VALUES ('205', '
其他地区', '178');
INSERT INTO `n_area` VALUES ('206', '
其他地区', '180');
INSERT INTO `n_area` VALUES ('207', '
其他地区', '182');
INSERT INTO `n_area` VALUES ('214', '
拉萨', '213');
INSERT INTO `n_area` VALUES ('210', '
其他地区', '45');
INSERT INTO `n_area` VALUES ('211', '
其他地区', '46');
INSERT INTO `n_area` VALUES ('212', '
其他地区', '86');
INSERT INTO `n_area` VALUES ('220', '
新三区', '184');
INSERT INTO `n_area` VALUES ('219', '
新二区', '184');
INSERT INTO `n_area` VALUES ('221', '
天河区', '4');
INSERT INTO `n_area` VALUES ('222', '
越秀区', '4');
INSERT INTO `n_area` VALUES ('223', '
海珠区', '4');

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值