AJAX实现二级联动

通过AJAX实现二级联动,先动态获取一级下拉列表,通过Onchange()事件,异步查询二级下拉列表内容,把内容写进标签,存入二级下拉列表中

一级下拉列表动态获取列表内容

	@ResponseBody
	@Permission("ST1000")
	@RequestMapping("/editParksite")
	public String editPosOperator(ParkingsiteVO parkingsiteVO ) {
		boolean rlt = false;
		//通过id查询表,看有没有数据,有就是编辑需要回显数据,没有就是添加
		ParkingsiteVO selectParkingsiteById = parkingSiteService.selectParkingSiteById(parkingsiteVO.getParkingid());
		if ( selectParkingsiteById != null ) {
			Date now = new Date(); 
			SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//可以方便地修改日期格式
			String uptime = dateFormat.format( now ); 
			parkingsiteVO.setUpdatetime(uptime);
			rlt = parkingSiteService.updateParksiteById(parkingsiteVO);
		}else{
			Date now = new Date(); 
			SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss");//可以方便地修改日期格式
			String addtime = dateFormat.format( now ); 
			parkingsiteVO.setAddtime(addtime);
			
			parkingsiteVO.setUpdateway("Unkonwn");
			
			rlt = parkingSiteService.insertParkingSite(parkingsiteVO);
		}
		return callbackSuccess(rlt);
	}

HTML页面获取Model域中的对象展示一级下拉列表

<div class="hr-line-dashed"></div>
         <div class="form-group"><label class="col-sm-2 control-label">选择区域</label>
            <div class="col-sm-10">
            <select name="areacode" class="inputblue" id="area" style="width: 388px;height:35px;" 
            onchange="selectSiteByAreacode(this.options[this.options.selectedIndex].value)">
           	 #if($msg)//判断是添加还是编辑(添加没有信息,编辑需要回显数据)
            <option >请选择</option>//设置默认下拉选项
            	#foreach($aaaa in $AreaList)//Velocity模板循环model域对象
            <option  value="$!{aaaa.areacode}">$!{aaaa.areaname}</option>
            	#end
            #else
            <option value="$!{parkingsiteVO.areacode}">${parkingsiteVO.areaname}</option>
            	#foreach($aaaa in $AreaList)
	            	#if($parkingsiteVO.areacode != $aaaa.areacode)
            <option value="$!{aaaa.areacode}">$!{aaaa.areaname}</option>
	            	#end
	           	 #end
           	#end
            </select>
            </div>
        </div>

在一级下拉列表中设置Onchange事件
并给事件传参(this.options[this.options.selectedIndex].value 获取当前下拉列表中被选中列的value值)

  <select name="areacode" class="inputblue" id="area" style="width: 388px;height:35px;" onchange="selectSiteByAreacode(this.options[this.options.selectedIndex].value)">

在JS中实现Onchange事件通过AJAX异步查询
把查询结果通过循环插入二级下拉列表当中

function selectSiteByAreacode(id) {
   	 $.ajax({
        	url: "#springUrl('/st/parksite/selectSiteByAreacode')",
            data: {"id":id}, 
            async: false, 
            type: "POST",
            success: function(result){
            	str ='<option value="">请选择</option>';//先给个默认选项
              	$("#site").html(str);
            	for (var i=0;i<result.length;i++) {//循环添加下拉选项
					str+='<option value="'+result[i].id+'">'+result[i].sitename+'</option>';
				}
			 	$("#site").html(str);
            } 
    }); 
}

异步查询调用的URL,返回查询结果

	@ResponseBody
	@Permission("ST1000")
	@RequestMapping("/selectSiteByAreacode")
	public List<SiteVO> selectSiteByAreacode(String id ) {
		List<SiteVO> selectSiteByAreacode = siteService.selectSiteByAreacode(id);
		return selectSiteByAreacode;
	}

HTML页面二级下拉列表标签

 <div class="hr-line-dashed"></div>
         <div class="form-group"><label class="col-sm-2 control-label">选择路段</label>
            <div class="col-sm-10">
            <select name="siteid" class="inputblue"  id="site"  style="width: 388px;height:35px;" >
           	 #if($msg)//判断添加还是编辑页面
            <option >请选择</option>//默认选项
            #else
            <option value="$!{parkingsiteVO.siteid}">${parkingsiteVO.sitename}</option>//数据回显
           	#end 
            </select>
            </div>
        </div>

*本文仅个人学习记录使用,如有错误或者不妥,欢迎指正批评

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值