demo-输入框搜索下拉框出现类似文字信息

在这里插入图片描述
html

	<input type="text" />
    <ul></ul>
    <script src="../ajax01.js"></script>
    <script>
      let oInput = document.querySelector("input");
      let oUl = document.querySelector("ul");
      //后台给我们提供了接口
      //post  case02.php  参数wd 返回一个数组
      oInput.oninput = function () {
        if (this.value == "") {
          oUl.innerHTML = "";
          return;
        }
        var data = { wd: oInput.value };
        ajax({
          type: "post",
          url: "case02.php",
          data: data,
          success: function (data) {
            var str = "";
            data = JSON.parse(data);
            data.forEach((item) => {
              str += `<li>${item}</li>`;
            });
            oUl.innerHTML = str;
          },
        });
      };
    </script>

php

<?php
$kw = $_REQUEST["wd"];
$datas = ["a","aa","aaa","aaaa","aaaaa"];
$newArr = [];
foreach($datas as $item){
    if(substr($item,0,strlen($kw))==$kw){
        array_push($newArr,$item);
    }
}
$json = json_encode($newArr);
echo $json;


?>

ajax01.js

function ajax(obj) {
  // 注意 无论是get还是post 都有相同部分代码
  if (window.XMLHttpRequest) {
    var xhr = new XMLHttpRequest();
  } else {
    var xhr = new ActiveXObject("Microsoft.XMLHTTP");
  }
  //将{username:"aaa",password:111}变成username=aaa&password=111
  var str = "";
  for (var i in obj.data) {
    str += i + "=" + obj.data[i] + "&";
  }
  //将结尾的&替换成空字符
  str = str.replace(/&$/, "");

  //在不同的地方加判断
  //toLowerCase()将字母转小写toUpperCase()将字母转大写
  if (obj.type.toLowerCase() == "get") {
    if (str == "") {
      xhr.open("get", obj.url);
    } else {
      xhr.open("get", obj.url + "?" + str);
    }
    xhr.send();
  }
  if (obj.type.toLowerCase() == "post") {
    xhr.open("post", obj.url);
    xhr.setRequestHeader("Content-type", "application/x-www-form-urlencoded");
    xhr.send(str);
  }

  xhr.onreadystatechange = function () {
    if (xhr.readyState == 4) {
      if (xhr.status == 200) {
        var data = xhr.responseText;
        obj.success(data);
      } else {
        if (obj.error) {
          obj.error();
        }
      }
    }
  };
}
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值