Ajax实现搜索引擎自动补全功能

网友投稿 282 2022-09-07

Ajax实现搜索引擎自动补全功能

每当我们遇到一些问题时候,我们会百度一下,你是有过我们的问题还没打完就已经出现的经历?

如下图:

天猫:

京东:

这时候的你是否想到如何实现这个功能?

我们的网页明明没有刷新,可是却出现了数据的交互,也就是Ajax的强大之处。

下面以一个例子来实现。

对应的代码

Search

为了存贮自动补全的文字,我们使用div标签 设置背景色为白色,绝对布局。并且默认不显示。

在百度的补全功能中我们发现,每输入一个字,对应的补全文字就会更新,所以我们要为搜索框设置键盘抬起事件(keyup),然后就是Ajax实现异步交互。 js代码:

而其三种事件对应的js代码如下:

servlet:向server调用相应的业务然后返回查询的结果

public void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { response.setContentType("text/html;charset=utf-8"); request.setCharacterEncoding("utf-8"); //获取搜索框输入的内容 String name=request.getParameter("name"); name=new String(name.getBytes("iso-8859-1"), "utf-8"); //向server层调用相应的业务 BooksServer booksServer=new BooksServer(); String res=booksServer.findBooksAjax(name); //返回结果 response.getWriter().write(res); } public void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { doGet(request, response); }

service层 把dao层查询的所有书名拼接为一个字符串。

//查询所有的书本名 public String findBooksAjax(String name) { List nameList=booksDao.findBooksAjax(name); String res=""; for (int i=0;i0){ res+=","+nameList.get(i); }else{ res+=nameList.get(i); } } return res; }

dao层 根据部分书名,查询类似的书名

//根据部分书名,查询类似的书名 public List findBooksAjax(String name) { QueryRunner qr=new QueryRunner(C3P0Util.getDataSource()); try { return qr.query("select name from book where name like ?", new ColumnListHandler(),"%"+name+"%"); } catch (SQLException e) { e.printStackTrace(); } return null; }

运行结果:

版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。

上一篇:影剧综营销“二八效应”何解!
下一篇:关于struts2验证器不起作用
相关文章

 发表评论

暂时没有评论,来抢沙发吧~