ajax实现下拉框联动

前端之家收集整理的这篇文章主要介绍了ajax实现下拉框联动前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

spring mvc+bootstrap


最近在做一个新闻不发布网站,网站栏目需要实现下拉框联动,因为没有用到前端框架,因此需要自己来写,废话不多说,思路是,跳转到新闻发布页面,需要初始化一级目录。

        @RequestMapping("/release")
        public String release(HttpServletRequest request) {
	
		//一级目录
		request.setAttribute("pClassifyList",classifyService.getFirLevDire());
		return "/admin/news/release";
	}

一级目录需要写个onchange 事件,影响二级目录的改变。
                <div class="form-group">
			<!-- 一级目录 -->
			<label class="col-sm-2 control-label">所属栏目:</label>
	        	<div class="col-xs-2">
	    		<select class="form-control" name="classifys" id="classifys" onChange="getNextClassify()">
	  			<c:forEach var="classify" items="${pClassifyList}" varStatus="s">
					<option value="${classify.id}">${classify.name}</option>
				</c:forEach>
	  			</select>
			</div>
			<!-- 二级目录 -->
			<div class="col-xs-2">
	    		<select class="form-control" name="classifyid" id="classifyid">
					
	  			</select>
			</div>
	         </div>

方法的js写法,我们需要把一级目录的主键传到后台,根据一级目录主键查询二级目录id和name,注意每次需要清空二级目录,传过来的是json格式
            //下拉框连动
	    function getNextClassify() {
			//获取下拉框主键
			var classifyId=$("#classifys").find('option:selected').val();
			$("#classifyid").empty();     //清空二级目录 
			var classNext=$("#classifyid");
			$.ajax({  
                          type: "post",contentType:"application/json",url : "${base}/admin/news/getNextClassfy.htm?classifyId="+classifyId,success: function (data) {   
                	    var data = eval('(' + data + ')'); 
                	    if(data.length!="" && data.length!=null){ 
                     	      for ( var i = 0; i < data.length; i++) {
                     			classNext.append("<option value="+data[i].id+">"+data[i].name+"</option>");
                     	      }
                	     }else{
                		classNext.append("<option value="+classifyId+">---无---</option>");
                	    }
           		       }   
           	        }); 
		}
调用后台的java方法,我们把一条记录当作一个对象,把对象放在list里然后传到前台
       /**
	 * 
	* 方法名: getJson
	* 方法作用: 获取二级目录值
	* 创建人:Wu Feng
	* 创建时间:2016-10-23 下午08:53:50   
	* @param @param request
	* @param @param classify
	* @param @return
	* @param @throws Exception    
	* 返回值类型: List<Classify>    
	* @throws
	 */
    @ResponseBody 
    @RequestMapping("/getNextClassfy")  
    public List<Classify> getJson(HttpServletRequest request,Classify classify) throws Exception {  
	String classfyId=request.getParameter("classifyId");
        classify.setId(Integer.valueOf(classfyId));
        List<Classify> classifys=classifyService.getSecDire(classify);
        return classifys;
    }  

        /**
	 * 
	* 方法名: getSecDire
	* 方法作用: 二级目录
	* 创建人:Wu Feng
	* 创建时间:2016-10-23 下午07:45:25   
	* @param @param classify
	* @param @return    
	* 返回值类型: List<Classify>    
	* @throws
	 */
	public List<Classify> getSecDire(Classify classify){
		return classifyDao.getSecDire(classify);
	}
/**
	 * 
	* 方法名: getSecDire
	* 方法作用:获得二级目录
	* 创建人:Wu Feng
	* 创建时间:2016-10-23 下午07:17:19   
	* @param @return    
	* 返回值类型: List<Classify>    
	* @throws
	 */
	public List<Classify> getSecDire(Classify classify){
		String sql="select * from t_classify where isuse = 1 and pid="+classify.getId()+" order by orderindex asc";
		List<Classify> list = jdbcTemplate.query( sql,ParameterizedBeanPropertyRowMapper.newInstance(Classify.class));
		return list;
	}

最后在每次界面加载的时候,j调用onchange事件
            //初始化就调用getNextClassify方法
	    $(function () {
	    	getNextClassify();
	    })
原文链接:https://www.f2er.com/ajax/161729.html

猜你在找的Ajax相关文章