Javascript Objectify e JSP中的自动完成查询和响应
我正在尝试使用jqueryautocomplete、ajax、objectify和JSP实现一个简单的自动完成。但问题是,我不能用一个建议列表来执行查询以响应以json格式发送到Jquery。我该怎么做?这是我的代码:Javascript Objectify e JSP中的自动完成查询和响应,javascript,jquery,jsp,autocomplete,objectify,Javascript,Jquery,Jsp,Autocomplete,Objectify,我正在尝试使用jqueryautocomplete、ajax、objectify和JSP实现一个简单的自动完成。但问题是,我不能用一个建议列表来执行查询以响应以json格式发送到Jquery。我该怎么做?这是我的代码: function showData(value){ $.ajax({ url : "categoriaServlet?action=autoC&name="+value, type : "POST", async
function showData(value){
$.ajax({
url : "categoriaServlet?action=autoC&name="+value,
type : "POST",
async : false,
success : function(data) {
console.log(data);
$("#nam").autocomplete(data);
}
});
}
这是一段jsp代码:
public void autoc(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException {
String name = req.getParameter("name");
System.out.println(name);
ObjectifyService.register(Categoria.class);
System.out.println(ofy().load().type(Categoria.class).filter("nome in", ofy().load().type(Categoria.class)).list());
那么如何才能正确地执行查询以发送建议列表呢?谢谢我决定了。代码如下:
public void autoc(HttpServletRequest req, HttpServletResponse resp)
throws ServletException, IOException, JSONException {
String name=req.getParameter("name");
System.out.println(name);
ObjectifyService.register(Categoria.class);
System.out.println(ofy().load().type(Categoria.class).filter("nome in", ofy().load().type(Categoria.class)).list());
System.out.println(ofy().load().type(Categoria.class).filter("nome", name).list());
QueryResultIterable<Categoria> lista=ofy().load().type(Categoria.class).iterable();
ArrayList<String> l= new ArrayList<String>();
for(Categoria c : lista){
l.add(c.getNome());
}
StringBuilder sb= new StringBuilder();
ArrayList<String> l2= new ArrayList<String>();
String search = name;
sb.append("[");
for(String str: l) {
sb.append(str);
sb.append("\"");
if(str.trim().contains(search)){
sb.append(str);
sb.append("\"");
sb.append(",");}
}
sb.append("\"");
sb.append("\"");
sb.append("]");
resp.setContentType("application/json"); // Set content type of the response so that jQuery knows what it can expect.
resp.setCharacterEncoding("UTF-8");
resp.getWriter().write(sb.toString());
}
public void autoc(HttpServletRequest-req、HttpServletResponse-resp)
抛出ServletException、IOException、JSONException{
字符串名称=req.getParameter(“名称”);
System.out.println(名称);
ObjectifyService.register(Categoria.class);
System.out.println(of y().load().type(Categoria.class).filter(“nome in”,of y().load().type(Categoria.class)).list());
System.out.println(of y().load().type(Categoria.class).filter(“nome”,name).list());
QueryResulterable lista=ofy().load().type(Categoria.class).iterable();
ArrayList l=新的ArrayList();
对于(类别c:lista){
l、 添加(c.getNome());
}
StringBuilder sb=新的StringBuilder();
ArrayList l2=新的ArrayList();
字符串搜索=名称;
某人加上(“[”);
for(字符串str:l){
某人附加(str);
某人加上“\”;
如果(str.trim()包含(搜索)){
某人附加(str);
某人加上“\”;
某人附加(“,”;}
}
某人加上“\”;
某人加上“\”;
某人加上(“]”);
resp.setContentType(“application/json”);//设置响应的内容类型,以便jQuery知道它可以期望什么。
分别为setCharacterEncoding(“UTF-8”);
分别是getWriter()写(sb.toString());
}
这是我的剧本:
<script type="text/javascript">
function showData(value) {
var x=null;
$.ajax({
url : "categoriaServlet?action=autoC&name=" + value,
type : "POST",
async : false,
success : function(data) {
console.log(data);
x = data;
}
});
$("#nam").autocomplete({ source: x
});
};
函数showData(值){
var x=null;
$.ajax({
url:“categoriaServlet?action=autoC&name=“+value,
类型:“POST”,
async:false,
成功:功能(数据){
控制台日志(数据);
x=数据;
}
});
$(“#nam”).autocomplete({来源:x)
});
};