当前位置:首页 > 行业动态 > 正文

如何在没有刷新的情况下,在dedecms首页实现文章列表的无刷新顶和踩功能?

Dedecms首页文章列表无刷新顶、踩实现方法

1. 前端实现

1.1 HTML结构

确保你的文章列表HTML中包含顶、踩按钮,并且为它们绑定事件处理函数。

<div >
    <h3 >文章标题</h3>
    <div >
        <!其他信息 >
    </div>
    <div >
        <button  dataid="123">顶</button>
        <button  dataid="123">踩</button>
        <span >0</span>
    </div>
</div>

1.2 CSS样式

为顶、踩按钮添加样式。

.voteup, .votedown {
    padding: 5px 10px;
    border: 1px solid #ddd;
    cursor: pointer;
}
.voteup {
    backgroundcolor: #f0f0f0;
}
.votedown {
    backgroundcolor: #f8f8f8;
    color: red;
}

1.3 JavaScript实现

使用JavaScript来处理点击事件,并通过AJAX发送请求到服务器。

document.addEventListener('DOMContentLoaded', function() {
    var voteButtons = document.querySelectorAll('.voteup, .votedown');
    voteButtons.forEach(function(button) {
        button.addEventListener('click', function() {
            var voteType = this.classList.contains('voteup') ? 'up' : 'down';
            var articleId = this.getAttribute('dataid');
            var url = '/vote.php'; // 服务器处理投票的URL
            var data = {
                type: voteType,
                id: articleId
            };
            fetch(url, {
                method: 'POST',
                headers: {
                    'ContentType': 'application/json'
                },
                body: JSON.stringify(data)
            })
            .then(response => response.json())
            .then(data => {
                if (data.success) {
                    // 更新投票数
                    var voteCountSpan = this.parentElement.querySelector('.votecount');
                    voteCountSpan.textContent = parseInt(voteCountSpan.textContent) + (voteType === 'up' ? 1 : 1);
                } else {
                    alert(data.message);
                }
            })
            .catch(error => console.error('Error:', error));
        });
    });
});

2. 后端实现

2.1 PHP处理投票

创建一个PHP脚本处理投票请求。

<?php
// vote.php
header('ContentType: application/json');
// 数据库连接和查询省略...
$id = $_POST['id'];
$type = $_POST['type'];
$userId = $_SESSION['user_id']; // 用户ID
// 查询数据库,更新投票数
// ...
if ($updateSuccess) {
    echo json_encode(['success' => true]);
} else {
    echo json_encode(['success' => false, 'message' => '投票失败']);
}
?>

2.2 数据库操作

确保你的数据库中有相应的表来存储投票信息。

CREATE TABLE votes (
    id INT AUTO_INCREMENT PRIMARY KEY,
    article_id INT,
    user_id INT,
    type ENUM('up', 'down'),
    created_at TIMESTAMP DEFAULT CURRENT_TIMESTAMP
);

3. 总结

是实现Dedecms首页文章列表无刷新顶、踩功能的基本步骤,前端通过JavaScript和AJAX与后端PHP脚本交互,后端处理投票逻辑并更新数据库,这样用户就可以在不刷新页面的情况下进行投票操作。

0

随机文章