php使用ajax实现点赞
实现思路
使用AJAX实现点赞功能需要前端通过JavaScript发送异步请求到后端PHP处理,后端更新数据库后返回结果,前端根据结果更新页面显示。
前端代码
HTML部分需要包含点赞按钮和显示点赞数的元素:
<button id="like-btn" data-post-id="123">点赞</button>
<span id="like-count">0</span>
JavaScript部分使用jQuery处理AJAX请求:
$(document).ready(function(){
$('#like-btn').click(function(){
var postId = $(this).data('post-id');
$.ajax({
url: 'like.php',
type: 'POST',
data: {post_id: postId},
dataType: 'json',
success: function(response){
if(response.success){
$('#like-count').text(response.like_count);
}else{
alert(response.message);
}
},
error: function(){
alert('请求失败');
}
});
});
});
后端PHP代码
创建like.php处理点赞请求:
<?php
header('Content-Type: application/json');
// 假设数据库连接已建立
$db = new PDO('mysql:host=localhost;dbname=test', 'username', 'password');
$postId = $_POST['post_id'] ?? 0;
// 验证post_id
if(!is_numeric($postId) || $postId <= 0){
echo json_encode(['success' => false, 'message' => '无效的帖子ID']);
exit;
}
// 开启事务
$db->beginTransaction();
try {
// 更新点赞数
$stmt = $db->prepare("UPDATE posts SET likes = likes + 1 WHERE id = ?");
$stmt->execute([$postId]);
// 获取更新后的点赞数
$stmt = $db->prepare("SELECT likes FROM posts WHERE id = ?");
$stmt->execute([$postId]);
$likeCount = $stmt->fetchColumn();
$db->commit();
echo json_encode(['success' => true, 'like_count' => $likeCount]);
} catch(Exception $e) {
$db->rollBack();
echo json_encode(['success' => false, 'message' => '操作失败']);
}
数据库准备
需要确保posts表有相应字段:
CREATE TABLE posts (
id INT AUTO_INCREMENT PRIMARY KEY,
likes INT DEFAULT 0,
-- 其他字段...
);
安全考虑
实现时应注意以下几点:
- 对用户输入进行严格验证
- 使用预处理语句防止SQL注入
- 考虑添加防重复提交机制
- 对非登录用户进行限制
扩展功能
可以根据需求添加更多功能:

- 取消点赞
- 用户点赞记录
- 热门排行
- 点赞动画效果






