AJAX+php实现模糊查询(代码),一般用于搜索功能

功能描述

  • 用户在输入框中输入关键字;
  • 点击“查询”按钮,查询出含有该关键字的数据;(此案例关键字限制规则是:%keyword%,即数据中含有关键字就符合)
  • 数据在ul中渲染在页面

小知识点

  • json_encode() 是php的一个内置函数(php > 5.2)可以使用,把数组转换成json字符串 
  • eval() 是全局对象的一个函数属性

  • eval() 函数会将传入的字符串当做 JavaScript 代码进行执行。 

网站链接:

 .html

<input type="text"><button>搜索</button>
    <!-- 显示搜索出来的内容-->
<ul></ul>
<script>
        //获取操作对象
        var inp=document.querySelector("input")
        var btn=document.querySelector("button")
        var ul=document.querySelector("ul")
        //给按钮绑定点击事件
        btn.onclick=function(){
            //获取输入框中的value值
            var val=inp.value
            //创建ajax对象
            var xhr=new XMLHttpRequest()
            //配置请求信息  携参请求  参数传送到09.php页面
            xhr.open('get','./09.php?keyword='+val)
            //发送请求
            xhr.send()
            //监听ajax状态
            xhr.onreadystatechange=function(){
                //判断ajax状态是否结束
                if(xhr.readyState==4){
                    //判断http请求是否成功
                    if(xhr.status==200){
                        //dt:是一个左右俩边有括号[]的字符串,从后台09.php中传送过来的
                        var dt=xhr.responseText
                        //将字符串dt转为数组对象
                        //eval() 是全局对象的一个函数属性
                        //eval() 函数会将传入的字符串当做 JavaScript 代码进行执行。
                        var arr=eval('('+dt+')')
                        //arr:是一个数组对象,如[{商品1信息},{商品2信息},{商品3信息}])
                        //创建字符串,拼接所有内容
                        var s1=''
                        //遍历数组中所有数据,把数组中的每一个对象遍历出来
                        arr.forEach(item=>{
                            // item.name1:表示只需要各个对象的名字显示出来即可
                            s1+=`
                                <li>${item.name1}</li>
                            `
                        })
                        //把拼接好的内容,渲染到ul中
                        ul.innerHTML=s1
                    }
                }
            }
        }
    </script>

.php

<?php
header("content-type:text/html;charset=utf-8");
//获取传入的参数(从09.ajax9.html传送过来的keyword)
$k=$_GET['keyword'];
//连接数据库
$link=mysqli_connect("localhost","root",'',"shop2");
//给连接好的数据库设置编码
mysqli_set_charset($link,"utf8");
//编写SQL语句
$sql="select * from bbb where name1 like '%$k%'";
//执行SQL语句  只要该数据表中有搜索关键字的数据都会被抽取出来放到result中
$result=mysqli_query($link,$sql);
//创建存放所有数据的数组(模糊查询搜索出来的几乎是很多条数据)
$ar1=[];
//遍历结果集中每条数据  遍历:执行一次,出来一条数据
while($row=mysqli_fetch_assoc($result)){
    //row:临时存放符合条件的数据
    //将遍历出来的数据添加到数组ar1中
    array_push($ar1,$row);
}
//返回响应结果
// json_encode() 内置函数(php > 5.2)可以使用,把数组转换成json字符串
echo json_encode($ar1);
//关闭数据库连接
mysqli_close($link);

?>

 

 

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值