PHP 实例 - AJAX 实时搜索
PHP 实例 - AJAX 实时搜索
在我们的网站中,搜索功能十分重要。为了更好的用户体验,我们可以采用实时搜索的方式,用户输入关键字时,搜索结果就会自动更新且不需要点击提交按钮。这里就是一个 PHP 实例 - AJAX 实时搜索的实现方式,让我们来了解一下。
实现步骤
HTML 文件
我们先构建 HTML 文件。在需要显示结果的地方添加一个 div
标签,用于接收搜索结果。input 标签接受用户的输入并且触发 AJAX 请求。
<!DOCTYPE html>
<html>
<head>
<title>实时搜索</title>
<meta charset="utf-8">
<script src="https://cdn.bootcss.com/jquery/3.2.1/jquery.min.js"></script>
</head>
<body>
<input type="text" id="search" name="search" placeholder="请输入你要搜索的内容">
<div id="result"></div>
<script src="index.js"></script>
</body>
</html>
PHP 文件
我们使用 PHP 文件来编写搜索代码。由于这里没有使用数据库,因此我们需要先准备好用于测试的数据。我们可以使用一个数组来模拟数据。
$data = array(
array(
'name' => 'Tom',
'age' => 20,
'address' => '广东'
),
array(
'name' => 'Jerry',
'age' => 22,
'address' => '北京'
),
array(
'name' => 'Bob',
'age' => 19,
'address' => '上海'
),
array(
'name' => 'Lucy',
'age' => 25,
'address' => '湖南'
)
);
接下来就是搜索代码的实现。我们使用 PHP 的 array_filter
函数来过滤数据。通过传入一个回调函数来过滤数组中的元素。当 $keyword
为空时,返回全部数据。
function search($keyword, $data){
if(!empty($keyword)){
$data = array_filter($data, function ($item) use ($keyword){
if (stristr($item['name'], $keyword) != false) {
return true;
} else if (stristr($item['address'], $keyword) != false) {
return true;
}
return false;
});
}
return $data;
}
AJAX 请求
我们使用 AJAX 进行实时搜索。在这里,我们使用 jQuery 的 $.ajax()
函数,来发起一个 GET 请求。当用户输入时,我们会立即发送 AJAX 请求,搜索结果会在 result
标签下即时更新。
$(function(){
$('#search').on('input', function(){
var search = $(this).val();
$.ajax({
type: 'GET',
url: 'search.php',
data:{
keyword:search
},
dataType:'json',
success:function(res){
var html = '';
$.each(res, function(index, item){
html += '<p>'+ item.name +', ' +item.age+ '岁, 家在'+item.address+'</p>';
});
$('#result').html(html);
}
});
});
});
总结
AJAX 实时搜索可以显著的提高网站的用户体验,本例子可以作为你的项目的基础,来实现各种类型的搜索。需要注意的是,当数据量较大时,我们需要使用数据库来进行查询,这样可以减轻服务器的压力。