ajax之仿百度智能搜索

在使用搜索引擎时,我们常常在输入框输入时下方出现相关推荐词,这是通过ajax异步请求实现的。
实现思路:通过得到输入输入框的值,然后使用百度的智能搜索接口发送ajax请求,得到返回的数据,并使用列表展现
关键知识:ajax,jsonp,keyup事件

具体代码:

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <meta http-equiv="X-UA-Compatible" content="ie=edge">
  <title>仿百度智能搜索</title>
  <style>
    * {
      margin: 0;
      padding: 0;
    }
    ul{
      list-style: none;
    }
    .con {
      width: 230px;
      margin: 100px auto;
    }
    .box{
      width: 230px;
      background: #1ce90e;
      padding: 10px;
    }
    #list ul{
      width: 248px;
      border: 1px solid #ccc;
    }
    #list li {
      padding: 5px 10px;

    }
  </style>
</head>

<body>
  <div class="con">
    <div id="box" class="box">
      <input type="text" name="search" id="txt">
      <input type="button" name="btn" value="search">
    </div>
    <div id="list"></div>
  </div>
</body>
<script src="jquery-1.11.2.js">
</script>
<script>
  //https://sp0.baidu.com/5a1Fazu8AA54nxGko9WTAnF6hhy/su?wd=
  $(function() {
    $("#txt").keyup(function() {
      console.log($("#txt"));
      var txt = $("#txt").val(); //得到搜索框的值
      console.log(txt);
      var url = "https://sp0.baidu.com/5a1Fazu8AA54nxGko9WTAnF6hhy/su?wd=" + txt;
      search(url);
    });
  });

  function search(url) {
    document.getElementById('list').innerHTML = '';
    $.ajax({
      type: 'get',
      async: true,
      url: url,
      dataType: 'jsonp',
      jsonp: 'cb', //传递给请求处理程序或页面的,用以获得jsonp回调函数名的参数名(默认为:callback)
      // jsonpCallback: 'callback', //自定义的jsonp回调函数名称,默认为JQuery自动生成的随机函数名,如:jQuery110208321269858078724_1542071577078(['aaa','bbb']);
      success: function(data) {
        console.log(data);
        document.getElementById('list').innerHTML = '';//2019.8.31添加
        var ul = $("<ul></ul>");
        $.each(data.s, function(i, elem) {
          var ele = $("<li></li>").append(elem);
          $(ul).append(ele);
        });
        $("#list").append(ul);
      },
      error: function() {
        console.log('fail');
      }
    })
  }
</script>

</html>

具体效果可见:仿百度智能搜索

2019.8.31完善:解决出现两个下拉框的问题,在ajax请求成功的函数中先清除下拉框数据

发布了95 篇原创文章 · 获赞 43 · 访问量 7万+

猜你喜欢

转载自blog.csdn.net/lyxuefeng/article/details/84027929