1

我是初学者。我觉得我在思考过程中遗漏了一些东西。我尝试了许多不同的东西。

我在我网站的每个帖子中都编写了一个简单的类似按钮。我有三个与此相关的 PHP 函数:

  • isLiked($id)用于$_Get['id']帖子和用户的 IP 地址 ( $_SERVER['REMOTE_ADDR']) 以检查用户是否已经喜欢该特定帖子。
  • likes()将“喜欢”插入数据库 - 它还使用$_GET['id']
  • getLikes($id)获取每个人的点赞数$id

likePost.php 是一个简单的页面,它只调用likes()(向数据库插入点赞)并回显结果,即getLikes($id). 是的,我在函数中调用了函数。

我正在处理的 JavaScript 看起来像这样(我不保证这是好的 JS)。

function likeButton() {
    $.ajax({
        url: "../../likes/",  //This is likePost.php, after .htaccess rewrite
        type: "post",
        data: {
            id:id },
        success: function(likes) {
            somethingHereIDontKnowWhat(likes);  //UGH
        }});
}

我现在的链接(无 JavaScript)+ 喜欢的数量现在看起来像这样:

echo "<br/><div class='right'><a href='../../likes/" . $post->id . "'>
<img src='/images/like.png' title='Like this' alt='Like button'></a>" . getLikes($post->id) . "<div><br/>";

我无法使用 JS 运行 PHP 函数(同时将 $post_id 发送到 url 以生成 $_GET['id'],但也使用(相同?)JS 打印和更新数字按下链接时的喜欢。这至少是该功能同时做的两件事——还是我完全迷路了?

应该让我得到喜欢的数量(交叉手指!!),但我需要一种方法来融入isLiked()它,因为链接应该被禁用 if isLiked() = true

4

1 回答 1

1

因此,如果我的理解正确,您想在帖子被点赞后更新点赞数,然后禁用点赞按钮?

首先给你的 div 一个 id,然后摆脱链接。

echo "<br/><div class='right' id="post' . $post->id . '">
<img src='/images/like.png' title='Like this' alt='Like button' onClick="likeButton(' . $post->id . ')">" . getLikes($post->id) . "<div><br/>";

然后你可以从ajax成功更新div上的内容。这将更新总数并删除类似的图像。

function likeButton(id) {
    $.ajax({
        url: "../../likes/",  //This is likePost.php, after .htaccess rewrite
        type: "post",
        data: {
            id:id },
        success: function(likes) {
            $('#post' + id).html(likes);
        }});
}

希望这是你所要求的。

此外,您不应使用 IP 地址将帖子标记为喜欢。IP地址可以改变,也可以多人使用同一个IP。最好为用户喜欢的每个帖子设置一个 cookie。

于 2020-05-28T11:13:35.363 回答