我正在尝试使系统类似于点赞/不喜欢的系统。我已经完成所有设置,但是我的jquery.ajax函数没有将我需要的数据发送给我。正在调用该函数,但未设置数据。
我添加了一个函数来检查是否调用了isset if语句,但是没有调用该函数,所以我知道ajax函数出了问题。我尝试查看其他类似问题的帖子,但这些解决方案均无效。抱歉,这只是我的愚蠢,解决方案很简单。
PHP-community.php-主网页
<div id="entries">
<?php foreach($posts as $post): ?>
<div class="entry">
<div class="entryInfo">
<img src="IMAGES/PlaceholderAlbumCover.jpg" alt="Album Cover" class="center" height="200" width="200">
<div class="artistInfo">
<h4><?php echo $post['name'] ?></h4>
<p> <?php echo $post['artist'] ?> </p>
</div>
<div class="votes">
<i <?php if(userVoted($post['id'])): ?>
class="fas fa-heart vote-btn"
<?php else: ?>
class="far fa-heart vote-btn"
<?php endif ?>
data-id="<?php echo $post['id'] ?>" style="color:#f44242">
</i>
<span class="voteCount"><?php echo getVotes($post['id']); ?></span>
</div>
</div>
</div>
<?php endforeach ?>
</div>
Javascript-表决.js-处理点击检测并将响应发送到表决.php
$.ajax({
url: 'index.php?page=community',
method:'post',
data: {
'action':action,
'post_id':post_id
},
success: function(data) {
if(action == 'unvote') {
$click_btn.toggleClass('far fas');
} else if(action == 'vote') {
$click_btn.toggleClass('far fas');
}
}
});
PHP-选民.php-处理系统服务器端
if(isset($_POST['action'])) {
consoleLog();
$post_id = $_POST['id'];
$action = $_POST['action'];
switch($action) {
case 'vote':
$query="INSERT INTO rating_info (user_id, post_id, rating_action)
VALUES ($user_id, $post_id, 'vote')
ON DUPLICATE KEY UPDATE rating_action='vote'";
break;
case 'unvote':
$query="DELETE FROM rating_info WHERE user_id=$user_id AND post_id=$post_id";
break;
default:
break;
}
mysqli_query($dbconnect, $query);
echo getRating($post_id);
exit(0);
}
它应该做的是通过将操作设置为表决或不投票来增加或减少mysql数据库中的投票计数,但是js文件从不设置操作数据,或者PHP脚本无法捕获该数据。
答案 0 :(得分:0)
您正在将JavaScript中的帖子数据作为post_id
传递,但尝试在php脚本中以$_POST['id']
的形式获取帖子数据
相反,请执行以下操作:$_POST['post_id']