我现在需要用到 autocomplete + ajax 来实现一个搜索自动填充功能由于是第一次使用 autocomplete ,而且没使用过 jquery,所以在显示返回内容的时候遇到困难我自己写了些代码,在输入关键字后,input type="text"下出现:
[{"userCode":"loty"}{"userCode":"landy"}]实际上我想要的结果是:loty
landy请问各位大虾应该怎样写?希望能给出完整的代码,谢谢!以下为本人写的代码:
js:
<script type="text/javascript">
$().ready(function() {
  $("#search").autocomplete(
"<%=basePath%>/right/Right!searchUser.action", //连接到action   
  {   
  max: 10,   
  scroll: false,   
  width: 162   
  }   
  
);
}RightAction.java
public void searchUser(){String inputKey = request.getParameter("q");
String ik = inputKey+"%";
System.out.println("accept key = "+ik);
DetachedCriteria dc = DetachedCriteria.forClass(ScmUser.class);
dc.add(Expression.like("userCode", ik));
userList = rightService.findByDetachedCriteria(dc);JSONArray array = new JSONArray();
try{
for (ScmUser it: userList) {
JSONObject json = new JSONObject();
json.put("userCode",it.getUserCode()); 
array.put(json);
}
}catch(Exception e){
e.printStackTrace();
}try{
PrintWriter out = response.getWriter();
out.print(array);
out.flush();
out.close();
}catch(Exception e){
e.printStackTrace();
}
}

解决方案 »

  1.   

    应该是JSON格式
    或者是个数组 
    你的即不是JSON又不是数组 他认为是一个字符串
      

  2.   

    json.put("userCode",it.getUserCode());  
    此处可以省略。因为autocomplete直接输出json.你无需再生成一个userCode的Key。直接out.print(array.toString());结果就会显示出来。
      

  3.   

    后台得到一个Json数据JSONArray jsonArray = JSONArray.fromObject(userList );
    JSONObject jsonObject = new JSONObject();
    jsonObject.put("data", jsonArray);
    out.print(jsonObject.toString());
    前台在这里autocomplete解析json数据分别设置