Ajax实现搜索联想 搜索关键词提醒 无刷新搜索
搜索联想应用非常广泛,百度,谷歌,搜狗,淘宝,天猫,京东,以及很多网站都有,只需要打上几个字,就有相关的搜索提示。
实现方法
通过javascript监听搜索框的内容,调用后端即可。
(1)javascript监听搜索框的内容
(2)把搜索框的关键词传给后端进行搜索
(3)搜索到结果,遍历到页面
演示
代码
index.html
<!DOCTYPE html>
<html>
<head>
<title>test</title>
<meta charset="utf-8">
<script src="https://cdn.bootcdn.net/ajax/libs/jquery/3.5.1/jquery.min.js"></script>
<style type="text/css">
#input-content{
width: 350px;
height: 200px;
margin:100px auto 20px;
}
#input-content input{
width: 100%;
height: 50px;
text-indent: 15px;
font-size: 18px;
outline: none;
border:2px solid #333;
border-radius: 100px;
}
/*输入框底部黄色背景去除*/
input:-webkit-autofill,
textarea:-webkit-autofill,
select:-webkit-autofill {
-webkit-box-shadow: 0 0 0 1000px white inset;
}
input[type=text]:focus, input[type=password]:focus, textarea:focus {
-webkit-box-shadow: 0 0 0 1000px white inset;
}
</style>
</head>
<body>
<!-- 表单 -->
<form>
<div id="input-content">
<h1>Ajax无刷新搜索</h1>
<input id="inputView" type="text" name="keyword" placeholder="请输入关键词">
<div>
</form>
<!-- 搜索结果 -->
<div id="result"></div>
<!-- 监听输入框 -->
<script type="text/javascript">
$("#inputView").bind("input propertychang",function(event){
var keyword = $.trim(this.value);
// ajax搜索
$.ajax({
type: "GET",
url: "server.php?keyword="+keyword,
success:function(data){
if (keyword == '') {
$("#result").html("<p>关键词不得为空</p>");
} else if (data[0].code == 202) {
$("#result").html("<p>暂无搜索结果</p>");
} else {
// 用empty()清空append()
$("#result").empty();
// 再循环遍历列表
for (var a in data){
var resname = data[a].resname;
$("#result").append("<p>"+resname+"</p>");
}
}
},
error : function() {
console.log("服务器错误")
}
});
});
</script>
</body>
</html>
server.php
<?php
header("Content-type:application/json");
// 创建连接
$conn = new mysqli("数据库服务器", "数据库账号", "数据库密码","数据库名");
// 获得关键词
$keyword = trim($_GET["keyword"]);
// 过滤关键词
if(empty($keyword)){
$results_search = array(
"code" => "201",
"msg" => "关键词不得为空"
);
}else{
mysqli_query($conn, "SET NAMES UTF-8"); //utf8 设为对应的编码
$sql_search = "SELECT * FROM 表名 WHERE 需要搜索的字段 LIKE '%$keyword%' ORDER BY ID DESC";
$result_search = $conn->query($sql_search);
if ($result_search->num_rows > 0) {
// 结果集是一个数组
$results_search = array();
while($row_search = $result_search->fetch_assoc()) {
// 把搜索结果集存进一个数组
$results_search[] = $row_search;
}
} else {
// 搜索无果
$results_search[] = array(
"code" => "202",
"msg" => "暂无搜索结果"
);
}
// 断开数据库连接
$conn->close();
}
// 返回结果
echo json_encode($results_search,JSON_UNESCAPED_UNICODE);
?>
Author:TANKING
Date:2020-11-14
WeChat:sansure2016
推荐阅读
原生JavaScript实现的SPA单页应用(hash路由)
单页Web应用 (single page web application,SPA) ,就是只有一张Web页面的应用,是加载单个HTML 页面并在用户与应用程序交互时动态更新该页面的Web应用程序。
TANKING赞 1
正则表达式实例
收集在业务中经常使用的正则表达式实例,方便以后进行查找,减少工作量。常用正则表达式实例1. 校验基本日期格式 {代码...} {代码...} 2. 校验密码强度密码的强度必须是包含大小写字母和数字的组合,不能使用特殊...
寒青赞 56阅读 8.4k评论 11
JavaScript有用的代码片段和trick
平时工作过程中可以用到的实用代码集棉。判断对象否为空 {代码...} 浮点数取整 {代码...} 注意:前三种方法只适用于32个位整数,对于负数的处理上和Math.floor是不同的。 {代码...} 生成6位数字验证码 {代码...} ...
jenemy赞 48阅读 6.9k评论 12
从零搭建 Node.js 企业级 Web 服务器(十五):总结与展望
总结截止到本章 “从零搭建 Node.js 企业级 Web 服务器” 主题共计 16 章内容就更新完毕了,回顾第零章曾写道:搭建一个 Node.js 企业级 Web 服务器并非难事,只是必须做好几个关键事项这几件必须做好的关键事项就...
乌柏木赞 75阅读 7k评论 16
再也不学AJAX了!(二)使用AJAX ① XMLHttpRequest
「再也不学 AJAX 了」是一个以 AJAX 为主题的系列文章,希望读者通过阅读本系列文章,能够对 AJAX 技术有更加深入的认识和理解,从此能够再也不用专门学习 AJAX。本篇文章为该系列的第二篇,最近更新于 2023 年 1...
libinfs赞 42阅读 6.8k评论 12
从零搭建 Node.js 企业级 Web 服务器(一):接口与分层
分层规范从本章起,正式进入企业级 Web 服务器核心内容。通常,一块完整的业务逻辑是由视图层、控制层、服务层、模型层共同定义与实现的,如下图:从上至下,抽象层次逐渐加深。从下至上,业务细节逐渐清晰。视图...
乌柏木赞 45阅读 8.5k评论 6
程序猿必读-防范CSRF跨站请求伪造
CSRF(Cross-site request forgery,中文为跨站请求伪造)是一种利用网站可信用户的权限去执行未授权的命令的一种恶意攻击。通过伪装可信用户的请求来利用信任该用户的网站,这种攻击方式虽然不是很流行,但是却...
mylxsw赞 22阅读 15.1k评论 12
**粗体** _斜体_ [链接](http://example.com) `代码` - 列表 > 引用
。你还可以使用@
来通知其他用户。