引言
在网站开发中,评级系统是一个非常常见的功能。本文将介绍如何使用 jQuery、AJAX 和 PHP 来构建一个 5 星级评级系统。本文将由第一步开始,带领您完成您自己的评级系统。在完成本文后,您将能够添加这个评级系统到您自己的网站中,让用户对您的网站进行评分。
第一步:准备工作
在开始构建评级系统之前,您需要确保您已经掌握以下技术:
HTML、CSS 和 JavaScript 的基础知识
jQuery 和 AJAX 的基础知识
PHP 的基础知识
如果您还没有掌握以上技术,您可以先花一些时间学习这些技术。
Step 1:创建 HTML 文件
首先,我们需要创建一个 HTML 文件来放置评级系统。在这个文件中,我们将创建一个 <div>
元素来包含我们的评级系统。在 <div>
元素内部,我们将创建 5 个 <span>
元素来模拟评级星星。每个 <span>
元素都将包含一个字体图标,用于表示一颗星星。下面是示例代码:
<div id="rating">
<span class="star" data-value="1"><i class="fa fa-star-o"></i></span>
<span class="star" data-value="2"><i class="fa fa-star-o"></i></span>
<span class="star" data-value="3"><i class="fa fa-star-o"></i></span>
<span class="star" data-value="4"><i class="fa fa-star-o"></i></span>
<span class="star" data-value="5"><i class="fa fa-star-o"></i></span>
</div>
在这里,我们为 <div>
元素设置了一个 ID,这样我们可以稍后从 JavaScript 中引用这个元素。对于每颗星星,我们都设置了一个 data-value
属性来表示这颗星星的值。对于每个 <span>
元素,我们还包含一个具有字体图标的 <i>
元素。在这个示例中,我们使用了 Font Awesome 来为星星添加字体图标。
Step 2:添加 CSS 样式
接下来,我们需要为评级系统添加 CSS 样式。我们将使用 CSS 来设置星星的颜色和大小。下面是示例 CSS 代码:
#rating {
font-size: 35px;
display: inline-block;
}
.star:hover,
.star:hover ~ .star {
color: #FFD700;
}
.star {
font-size: 1em;
color: #CCC;
transition: all .2s;
cursor: pointer;
display: inline-block;
}
.star[data-value="1"] {
order: 1;
}
.star[data-value="2"] {
order: 2;
}
.star[data-value="3"] {
order: 3;
}
.star[data-value="4"] {
order: 4;
}
.star[data-value="5"] {
order: 5;
}
.fa-star-o:before {
content: "\f006";
}
.fa-star:before {
content: "\f005";
color: #FFD700;
}
在这里,我们为 #rating
元素设置了一个较大的字体大小,并将其设置为 inline-block
,以使其可以根据其他内容进行对齐。我们使用 CSS 过渡和伪类来创建鼠标悬停效果。我们为每个星星设置了一个 data-value
属性,并在 CSS 中捕获它们的值以使用 flexbox order
属性重新排序星星元素。我们还为字体图标设置了 CSS 样式,使其呈现为实心星星或空心星星。
Step 3:编写 JavaScript 代码
现在,我们需要编写 JavaScript 代码来控制评级系统的行为。当用户单击星星时,我们将使用 AJAX 请求将评分发送到服务器。然后,我们将使用 jQuery 来更新星星的颜色,以反映用户的评分。下面是示例 JavaScript 代码:
$(document).ready(function() {
$("#rating .star").click(function() {
var rating = $(this).attr("data-value");
$.ajax({
type: "POST",
url: "rate.php",
data: {rating: rating},
success: function() {
$("#rating .star").each(function() {
var value = $(this).attr("data-value");
if (value <= rating) {
$(this).find("i").removeClass("fa-star-o").addClass("fa-star");
} else {
$(this).find("i").removeClass("fa-star").addClass("fa-star-o");
}
});
}
});
});
});
在这里,我们在文档准备就绪时绑定了单击事件。当用户单击星星时,我们使用 $(this).attr("data-value")
来获取星星的评分值,并将其发送到服务器。服务器将返回一个成功标志,然后我们将遍历星星元素并更新颜色,以反映用户的评分。如果星星的值小于或等于用户评分,我们将字体图标的类从 fa-star-o
更改为 fa-star
,这样星星将呈现为实心。否则,我们将图标的类从 fa-star
更改为 fa-star-o
,这样星星将呈现为空心。这样,我们就完成了评级系统的JavaScript代码。
第二步:创建 PHP 文件
现在,我们需要创建一个 PHP 文件来接受 AJAX 请求,并将评分存储到数据库中。在这里,我们将使用 PHP 和 MySQL,但您可以使用其他数据库技术,例如 MongoDB 或 PostgreSQL,来存储评级数据。下面是示例 PHP 代码:
$host = "localhost";
$user = "username";
$password = "password";
$database = "database";
$conn = new mysqli($host, $user, $password, $database);
if ($conn->connect_error) {
die("Connection failed: ".$conn->connect_error);
}
$rating = $_POST["rating"];
$stmt = $conn->prepare("INSERT INTO ratings (rating) VALUES (?)");
$stmt->bind_param("i", $rating);
$stmt->execute();
$stmt->close();
$conn->close();
?>
在这里,我们首先从 AJAX 请求中获取评分值,然后使用 mysqli
类建立到数据库的连接。如果连接失败,则输出错误消息并停止脚本。随后,我们使用准备语句将评分值插入到名为 ratings
的表中。最后,我们关闭语句和连接,并完成 PHP 文件的编写。
第三步:测试评级系统
现在,我们已经完成了评级系统的所有组件。接下来,我们需要测试评级系统。要完成此操作,请在服务器上部署文件,并指向您的评级系统页面。当用户单击评级星星时,会发生以下操作:
客户端发送 AJAX 请求到服务器
服务器接受请求并将评分插入到数据库中
服务器向客户端发送成功标志
客户端接受成功标志并更新评级系统中的星星颜色
通过完成上述步骤,您已经成功地创建了一个基于 jQuery、AJAX 和 PHP 的 5 星级评级系统。现在,您可以将它添加到您的网站中,让用户对您的网站进行评分。