jquery autocomplete插件的使用最近在做公司软件后台,其中有个要实现的是自动补全功能,感觉jquery的autocomplete很不错,文档很简单,但真正用起来还是出现了很多问题,
1,这个插件要传个后台的参数之前一直不知道,还总以为是那个input中的name,但一直得不到,后来通过firebug调试,发现它提交的url中总会带一个“q”过去,这才发现我后台要接收的参数是“q”,于是通过request.getParameter(“q”);得到参数了。
2,我后台接受参数后是用json传的数据,但好像页面接受不了,前台还要解析下
parse: function(data) {
var rows = [];
for(var i=0; i<data.length; i++){
rows[rows.length] = {
data:data[i].userName +” ”+data[i].nickName,
value:data[i].userName,
result:data[i].userName
};
}
return rows;
},
3,使用这个插件要将随页面一起加载进来,$(document).ready(function(){});
问题基本就这些,加载相应的包
<link rel=”stylesheet” type=”text/css” href=”jquery.autocomplete.css”>
<script type=”text/javascript” src=”jquery-1.5.2.js”></script>
<script type=”text/javascript” src=”jquery.autocomplete.js”></script>
下面是具体实现:
页面代码:
$(document).ready(function(){
$(“#username”).autocomplete(“GetStockNameServlet”, {
minChars: 1,
max: 40,
delay: 500,
scrollHeight: 160,
width:150,
scroll:true,
dataType:’json’,//返回数据类型
parse: function(data) {
var rows = [];
for(var i=0; i<data.length; i++){
rows[rows.length] = {
data:data[i].userName +” ”+data[i].nickName,
value:data[i].userName,
result:data[i].userName
};
}
return rows;
},
formatItem:function(row, i, n) {
return “<font color=’#990099′>”+row+”</font>”;
}
});
<input type=”text” name=”username” id=”username”>
这样其中GetStockNameServlet 请求的url。
后台代码:
String data = request.getParameter(“q”);//接收页面传来的数据。q为jquery的autocomplete默认的参数
UserInfoService userInfoService=SpringBeanContext.getInstance().getBean(“userInfoService”,UserInfoService.class);
List<UserInfo> userList = userInfoService.searchAllUser(data, (byte)2, 0).getResult();
Gson gson = new Gson();
out.print(gson.toJson(userList));
这里用到了Gson转json数据
问题解决了,很开心,附上图: