jquery - 星级评分系统在单击时保存值,仅在数据库中保存值
问题描述
我正在尝试制作一个星级评分系统,我有此代码,我想对其进行一些更改,在用户单击星星后,它会显示一个带有多少星星的警报并重置颜色,我想要的是用户点击后的颜色填充,并用星星下的 div 替换警报,这是我的代码:
JS:
$(function() {
$("div.star-rating > s, div.star-rating-rtl > s").on("click", function(e) {
// remove all active classes first, needed if user clicks multiple times
$(this).closest('div').find('.active').removeClass('active');
$(e.target).parentsUntil("div").addClass('active'); // all elements up from the clicked one excluding self
$(e.target).addClass('active'); // the element user has clicked on
var numStars = $(e.target).parentsUntil("div").length+1;
$('.show-result').text(numStars + (numStars == 1 ? " star" : " stars!"));
});
});
CSS:
.show-result {
margin: 10px;
padding: 10px;
color: green;
font-size: 20px;
}
.star-rating s:hover,
.star-rating s.active {
color: red;
}
.star-rating-rtl s:hover,
.star-rating-rtl s.active {
color: red;
}
.star-rating s,
.star-rating-rtl s {
color: black;
font-size: 50px;
cursor: default;
text-decoration: none;
line-height: 50px;
}
.star-rating {
padding: 2px;
}
.star-rating-rtl {
background: #555;
display: inline-block;
border: 2px solid #444;
}
.star-rating-rtl s {
color: yellow;
}
.star-rating s:hover:before,
.star-rating s.rated:before,
.star-rating s.active:before {
content: "\2605";
}
.star-rating s:before {
content: "\2606";
}
.star-rating-rtl s:hover:after,
.star-rating-rtl s.rated:after,
.star-rating-rtl s.active:after {
content: "\2605";
}
.star-rating-rtl s:after {
content: "\2606";
}
html
<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<div class="star-rating"><s><s><s><s><s></s></s></s></s></s></div>
<div class="show-result">No stars selected yet.</div>
这里的值可以显示但是如何在mysql中存储这个值。
解决方案
要将星级评分存储在数据库中,您应该使用 Ajax。下面的代码显示了使用 Jquery Ajax post 将值发布到服务器端脚本 (PHP)。
$(e.target).addClass('active'); // the element user has clicked on
var numStars = $(e.target).parentsUntil("div").length+1;
// modification starts here....
$.post( "saveRatings.php", { rating: numStars})// you may pass other necessary information
.done(function( data ) {
$('.show-result').text(numStars + (numStars == 1 ? " star" : " stars!"));
});
在你的saveRatings.php
档案上,
$ratings = $_POST['ratings'];
// You may need to pass more information to identify the user who gives the rating or the product that is being rated.
// Add your MySQL query to save the rating information to a database table
// return a success/failure response as needed.
您可能需要从数据库中获取评级并将其传递给 javascript 代码以在页面重新加载时保持评级。
推荐阅读
- python - 在 Matplotlib 中向图例类添加方法
- java - UserDefinedFileAttributeView 视图返回 null ,无法设置属性
- android - 使用 NextJS 中的路由器时,移动 chrome 浏览器本机共享按钮仅复制没有查询字符串的 url
- python - 使用 Python 从网站的搜索栏上刮取价格
- python - 可以使用 dataframe ix 进行分配,但不能检索
- android - TextInputLayout boxBackgroundColor 在“com.google.android.material:material:1.1.0-alpha02”之后不起作用
- git - 在 GIT 中中止合并后本地更改丢失
- laravel - 如何在代理后面不破坏 SignedURL 的情况下强制 route() 助手返回 HTTPS?
- c# - C#正则表达式匹配时间
- sql - 使用第二个表中的数据更新字段