jquery.autocomplete 实现实时查询

之前做过一个autocomplete的例子,但是用的是从数据中把数据全部取出来,然后进行匹配,如果取出的数据量比较少,用这个方法可以。但是如果数据量很大,则会造成响应速度很慢,所以还是弄了个实时的例子

页面:

课程代码:<input type="text"  name="qfkcdm" id="qfkcdm"/>
<input type="hidden" name="fkcdm" id="fkcdm"/>

首先是controller 层(比较菜,按道理这个层不应该写过多的代码)

    public @ResponseBody Object kkkcAuto(HttpServletRequest request){
    	String aparam = request.getParameter("aparam");
    	List<ExamKkkc> kkkclist = this.examService.getAutoKkkc(aparam);
    	 String date="";
    	 String jsdata="";
		 if(kkkclist!=null&&kkkclist.size()>0){
		  for(int i=0;i<kkkclist.size();i++){
				 date+=",{'name':'"+kkkclist.get(i).getKcmc()+"', 'to':'"+kkkclist.get(i).getKcdm()+"'}";
			  }
		  jsdata  = "["+date.substring(1)+"]";
		  }
    	return jsdata;
    }
我这个地方根据前台穿过来的一个参数,在后台进行获取list操作,获取到数据后,进行拼串处理,处理过后传到前台,这个时候传的是String类型的。

 $("#qfkcdm").autocomplete('<%=request.getContextPath() %>/manage/sys/exam/kkkcAuto.htm',{
  	    		minChars: 1,
  	        	max:10,//待定,显示记录数量
  	       		width: 200, 
  	        	matchContains: true,
  	        	autoFill: false,
  	        	//如果需要另外传值给action的话可以用这样的方式
  	         	extraParams:{   
  	         		aparam: function(){   
 	               		return $("#qfkcdm").val(); 
 					} 
  	       		}, 
  	       		//如果传过来的不是对象类型,必须进行json转化
                        parse: function(data) {
  	                return $.map(eval(data), function(row) {
  	                return {
  	                    data: row,
  	                    value: row.name,
  	                    result: row.to
  	                }
  	            })
  	            },
                    //如果在js中是通过对象的方式接受,用下面这种处理方式,待测试
                   /* parse: function(test){//进行对返回数据的格式处理
  					//content为我action里面定义的值
  	            	data = test;
  	              	var rows = [];
  	            	for(var i=0; i<data.length; i++){
  						var examkkkc = data[i];
  	                   	rows[rows.length] = {
  	                   	data:examkkkc.kcmc,
  	                   	value:examkkkc.to,
  	                   	result:examkkkc.kcmc
  	            		};
  	               	}   
  	            	
  	               	return rows;
  	    		}, */
  	    		formatItem: function(item) {
                      return "\"" + item.name + "\" [" + item.to + "]";
  	    			//return  "\""+ row.name + + "\" [" + row.to + "]";
                  },
                  formatMatch: function(row, i, max) {
                      return row.name + " " + row.to;
                  },
                  formatResult: function(row) {
                      return row.name;
                  }
              }).result(function(event,data,formatted){
  				$('#fkcdm').val(data.to);
  	     	}); 




  • 2
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值