`
LF_michael
  • 浏览: 22742 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

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 ="<%=request.getContextPath() %>/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 ="<%=request.getContextPath() %>/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 ="<%=request.getContextPath() %>/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"  onfocus="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,
  name varchar(20) ,
  parent_id int(11),
  )

记录

 

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');

 

附件中有相应的jar包

json-lib-2.1-jdk15.jar 是主要的

分享到:
评论

相关推荐

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

    标题 "Jquery各种插件和JQuery Ajax三级联动地区下拉框 & 非Ajax实现三级联动" 提供了我们讨论的关键技术点:jQuery、jQuery插件、Ajax以及三级联动地区下拉框的实现。这篇博客(博文链接:...

    jquery ajax 三级联动

    在三级联动中,jQuery主要负责监听用户的选择事件,并触发Ajax请求。 接下来是AJAX(异步JavaScript和XML),它允许Web应用在不刷新整个页面的情况下与服务器交换数据并更新部分网页内容。在三级联动中,每当用户...

    jQuery全国高校三级联动下拉框.zip

    总结来说,"jQuery全国高校三级联动下拉框"是一个基于jQuery的前端实践案例,涉及到的知识点包括:jQuery库的使用、DOM操作、事件处理、Ajax异步通信、JSON数据解析、CSS样式设计等。这个项目对于初学者来说,是一个...

    jQuery省市区三级联动下拉框.zip

    这个“jQuery省市区三级联动下拉框”是一个利用jQuery库实现的解决方案,它基于jQuery 1.8.2的迷你版本(jquery-1.8.2.min.js)进行构建。下面我们将详细探讨这一技术实现及其相关知识点。 首先,jQuery是一个广泛...

    JQuery+年月日三级下拉框联动

    在网页开发中,"JQuery+年月日三级下拉框联动"是一个常见的交互设计,主要用于用户输入日期的场景,例如填写表单时选择出生日期。这个设计涉及到JavaScript库JQuery的使用,以及HTML下拉框(select)的动态联动效果...

    jQuery弹出式下拉框省市区三级联动地区选择插件

    总的来说,这个"jQuery弹出式下拉框省市区三级联动地区选择插件"利用jQuery实现了高效、流畅的地区选择体验,通过预加载的地区数据实现了三级联动效果,而`index.html`、`js`和`img`文件则分别提供了页面结构、功能...

    jQuery下拉框三级联动插件.zip

    jQuery下拉框三级联动插件,就是一种能够提升用户交互体验的有效工具,尤其适用于数据层级关系复杂的场景,如地区选择、产品分类等。本文将深入解析该插件的工作原理和实现方式。 一、插件简介 jQuery下拉框三级...

    JQuery年月日三级下拉框联动

    在实现年月日联动下拉框时,主要依赖于JQuery的选择器功能来获取元素,以及事件监听和触发来实现联动效果。 首先,我们需要三个下拉框元素,分别代表年、月、日。在HTML代码中,为这三个元素设置ID以便后续JQuery...

    Jquery实现ajax三级联动

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

    Ajax实现下拉框三级联动

    **Ajax实现下拉框三级联动**是Web开发中一种常见的交互设计,主要用于提高用户体验,让用户在选择一项数据时,能够即时地看到与之关联的下级数据,而无需等待整个页面重新加载。这种技术通常应用于地址选择、产品...

    Ajax 无限级 联动下拉框

    本文将深入探讨如何利用Ajax实现无限级联动下拉框的功能。 一、Ajax基础概念 Ajax的核心是通过JavaScript创建XMLHttpRequest对象,它允许在后台与服务器进行异步数据交换。JavaScript调用XMLHttpRequest对象的open...

    三级联动 下拉框

    首先,三级联动下拉框的工作原理是基于JavaScript或jQuery等前端库来实现的。当用户在第一级下拉框中做出选择时,通过触发事件监听器,会动态更新第二级下拉框的内容;同样的,第二级的选择会影响第三级下拉框的选项...

    jquery动态创建联动下拉框

    总结来说,使用jQuery动态创建联动下拉框涉及的主要知识点包括:DOM操作(如`val()`、`on()`、`empty()`、`append()`),Ajax请求(`$.ajax()`或`$.get()`),以及JSON数据的解析和处理。通过这些技术,我们可以构建...

    jquery三级下拉框联动

    "jquery三级下拉框联动"是指使用jQuery实现的多级下拉菜单联动效果,通常用于表示层次结构的数据,例如这里提到的城市级联,用户在选择省份后,下拉框会自动更新为对应省份的城市,再选择城市后,可能会进一步显示...

    ajax 三级联动

    Ajax三级联动是指在网页中,通常在下拉框中,当用户选择一级选项时,根据一级选项的数据动态加载二级选项;接着,选择二级选项后,再加载对应的三级选项。这种联动效果常见于地区选择、商品分类等场景,能够高效地...

    jQuery日期三级联动,包含js和示例页面

    本主题将深入探讨如何使用jQuery实现一个日期三级联动的效果,这是一个常见于用户输入生日或其他时间信息的功能。 一、jQuery基础 jQuery的核心在于其简洁的语法,例如选择元素、操作DOM(文档对象模型)以及处理...

Global site tag (gtag.js) - Google Analytics