JSP AJAX模拟实现自动补全的两种方式

举报
tea_year 发表于 2021/12/30 00:32:52 2021/12/30
【摘要】 //Servlet的方式 package web; import java.io.IOException;import java.io.PrintWriter; import javax.servlet.ServletException;import javax.servlet.http.HttpServlet;import javax...

  
  1. //Servlet的方式
  2. package web;
  3. import java.io.IOException;
  4. import java.io.PrintWriter;
  5. import javax.servlet.ServletException;
  6. import javax.servlet.http.HttpServlet;
  7. import javax.servlet.http.HttpServletRequest;
  8. import javax.servlet.http.HttpServletResponse;
  9. import service.UserService;
  10. public class SuggestServlet extends HttpServlet {
  11. @Override
  12. protected void doGet(HttpServletRequest req, HttpServletResponse resp)
  13. throws ServletException, IOException {
  14. PrintWriter out=resp.getWriter();
  15. String keyword=req.getParameter("keyword");
  16. //利用service来进行测试
  17. if(! "".equals(keyword.trim())){
  18. UserService userService=new UserService();
  19. String result=userService.queryUsernameByKeyword(keyword);
  20. if(result!=null){
  21. out.println(result);
  22. }else{
  23. out.println("");
  24. }
  25. }
  26. out.close();
  27. }
  28. @Override
  29. protected void doPost(HttpServletRequest req, HttpServletResponse resp)
  30. throws ServletException, IOException {
  31. this.doGet(req, resp);
  32. }
  33. }

html页面内容:


  
  1. <h3>利用Ajax实现搜索自动补齐提示!</h3>
  2. <div style="width:500px">
  3. <input type="text" id="txtSearch" name="txtSearch"/>
  4. <input type="submit" id="cmdFind" name="cmdFind" value="搜索"/>
  5. <div id="suggest"></div>
  6. </div>


  
  1. var xhr;
  2. function createXhr(){
  3. try{
  4. return new XMLHttpRequest();
  5. }catch(e){
  6. return new ActiveXObject("Microsoft.XMLHTTP");
  7. }
  8. }
  9. //用户名文本框失去焦点的处理函数;
  10. function findSuggest(){
  11. xhr=createXhr();
  12. var keyword=document.getElementById("txtSearch").value;
  13. alert(keyword);
  14. xhr.onreadystatechange=callback;
  15. xhr.open("post","suggestAction",true);
  16. xhr.setRequestHeader("Content-type","application/x-www-form-urlencoded");
  17. xhr.send("keyword="+keyword);
  18. }
  19. function callback(){
  20. if(xhr.readyState==4){
  21. if(xhr.status==200){
  22. var sobj=document.getElementById("suggest");
  23. sobj.innerHTML="";
  24. var str=xhr.responseText.split(",");
  25. var suggest="";
  26. if(str.length>0 && str[0].length>0){
  27. for(i=0;i<str.length;i++){
  28. suggest+="<div οnclick='setSearch(this.innerHTML);'";
  29. suggest+=">"+str[i]+"</div>";
  30. }
  31. sobj.innerHTML=suggest;
  32. document.getElementById("suggest").style.display="block";
  33. }else{
  34. document.getElementById("suggest").style.display="none";
  35. }
  36. }
  37. }
  38. }
  39. function setSearch(obj){
  40. document.getElementById("txtSearch").value=obj;
  41. document.getElementById("suggest").style.display="none";
  42. }



  
  1. <script type="text/javascript" src="js/jquery-1.7.1.min.js"></script>
  2. <script type="text/javascript">
  3. //1.找对象;2.定事件;匿名事件;
  4. $(function(){
  5. $("#txtSearch").keyup(function(){
  6. //发送post请求,设置请求url,请求数据,成功返回函数;
  7. $.post("suggestAction",{keyword:$("#txtSearch").val()},callback);
  8. });
  9. });
  10. function callback(data){
  11. var sobj=$("#suggest");
  12. sobj.innerHTML="";
  13. var suggest="";
  14. var str=data.split(",");alert(data);
  15. if(str.length>0 && str[0].length>0){
  16. for(i=0;i<str.length;i++){
  17. suggest+="<div οnclick='setSearch(this.innerHTML);'";
  18. suggest+=">"+str[i]+"</div>";
  19. }
  20. sobj.html(suggest).css("display","block");
  21. }else{
  22. sobj.css("display","none");
  23. }
  24. }
  25. //将内容填充到搜索框中;
  26. function setSearch(obj){
  27. $("#txtSearch").val(obj);
  28. $("#suggest").css("display","none");
  29. }
  30. </script>


文章来源: aaaedu.blog.csdn.net,作者:tea_year,版权归原作者所有,如需转载,请联系作者。

原文链接:aaaedu.blog.csdn.net/article/details/53292071

【版权声明】本文为华为云社区用户转载文章,如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。