javascript - 如何在用户喜欢 MVC 架构中的推文后使用 AJAX 调用显示推文的点赞计数

标签 javascript php ajax model-view-controller twitter

我正在使用 MVC 架构创建 twitter 克隆。 我编写了以下 JavaScript 代码来显示类似和不同按钮。

当用户点击“like”按钮时,我将tweetId传递给ajax以使用actions.php更新数据库,

$(".likeTweet").click(function() {

    var id = $(this).attr("data-tweetlikeId"); /* Id of tweet*/

    $.ajax({
        type: "POST",
        url: "actions.php?action=likeTweet",
        data: "tweetlikeId=" + id,
        success: function(result){       
            if (result == "1") {

                $("a[data-tweetlikeId='" + id + "']").html("<p>Unlike</p>"); /* Displays Unlike button and I want to display like count here */


            } else if (result == "2") {

                $("a[data-tweetlikeId='" + id + "']").html("<p>Like</p>"); /* Displays like button and I want to display like count here */

            }  
        }                       
  })
})

下面的代码来自 actions.php,它检查 user($_SESSION['id') 是否已经喜欢该 tweet(tweetlikeId),如果是,则从数据库中删除该条目并返回值 1。

如果用户之前没有喜欢过推文,那么它将向数据库添加一个条目并返回值 2

if ($_GET['action'] == 'likeTweet') {

    $query = "SELECT * FROM tweetLikes WHERE userid = ". mysqli_real_escape_string($link, $_SESSION['id'])." AND tweetid = ". mysqli_real_escape_string($link, $_POST['tweetlikeId'])." LIMIT 1";

    $result = mysqli_query($link, $query);

        if (mysqli_num_rows($result) > 0) {

            $row = mysqli_fetch_assoc($result);

            mysqli_query($link, "DELETE FROM tweetLikes WHERE userid = ". mysqli_real_escape_string($link, $_SESSION['id'])." AND tweetid = ". mysqli_real_escape_string($link, $_POST['tweetlikeId'])." LIMIT 1");

            echo "1";

        } else {

            mysqli_query($link, "INSERT INTO tweetLikes (userid, tweetid) VALUES (". mysqli_real_escape_string($link, $_SESSION['id']).", ". mysqli_real_escape_string($link, $_POST['tweetlikeId']).")");

            echo "2";
        }

 $queryCount = "SELECT COUNT(tweetid) AS likes FROM tweetLikes WHERE tweetid = ". mysqli_real_escape_string($link, $_POST['tweetlikeId'])."";

$queryResult = mysqli_query($link, $queryCount);

 $rowCount = mysqli_fetch_assoc($queryResult); 

     $count = $rowCount['likes'];    /* Count of likes for a tweet */ 
}

在 actions.php 中,我还统计了该推文的点赞数。但我想使用 JavaScript 在“喜欢”和“不喜欢”按钮旁边显示该特定推文的点赞数。(In $(".likeTweet").click(function())

有人可以告诉我如何从 actions.php 获取喜欢计数,将其发送到 Ajax 并在 Javascript 中显示在喜欢/不喜欢按钮旁边吗???

最佳答案

您好,您可以通过将数组传递给 json 编码函数来完成此操作。这是更新后的 JavaScript 文件

$(".likeTweet").click(function() {

var id = $(this).attr("data-tweetlikeId"); /* Id of tweet*/

$.ajax({
    type: "POST",
    url: "actions.php?action=likeTweet",
    data: "tweetlikeId=" + id,
    dataType: "json",
    success: function(result){       
        if (result.likeDislike == "1") {

            // $("a[data-tweetlikeId='" + id + "']").html("<p>Unlike</p>"); /* Displays Unlike button and I want to display like count here */
            $("a[data-tweetlikeId='" + id + "']").html(result.likeCount); /* Displays Unlike button and I want to display like count here */


        } else if (result.likeDislike == "2") {

            // $("a[data-tweetlikeId='" + id + "']").html("<p>Like</p>"); /* Displays like button and I want to display like count here */
            $("a[data-tweetlikeId='" + id + "']").html(result.likeCount); /* Displays like button and I want to display like count here */

        }  
    }                       
  })
})

这是更新后的action.php 文件。

if ($_GET['action'] == 'likeTweet') {

    $query = "SELECT * FROM tweetLikes WHERE userid = ". mysqli_real_escape_string($link, $_SESSION['id'])." AND tweetid = ". mysqli_real_escape_string($link, $_POST['tweetlikeId'])." LIMIT 1";

    $result = mysqli_query($link, $query);

        if (mysqli_num_rows($result) > 0) {

            $row = mysqli_fetch_assoc($result);

            mysqli_query($link, "DELETE FROM tweetLikes WHERE userid = ". mysqli_real_escape_string($link, $_SESSION['id'])." AND tweetid = ". mysqli_real_escape_string($link, $_POST['tweetlikeId'])." LIMIT 1");

             $likeDislike = "1";

        } else {

            mysqli_query($link, "INSERT INTO tweetLikes (userid, tweetid) VALUES (". mysqli_real_escape_string($link, $_SESSION['id']).", ". mysqli_real_escape_string($link, $_POST['tweetlikeId']).")");

             $likeDislike = "2";
        }

 $queryCount = "SELECT COUNT(tweetid) AS likes FROM tweetLikes WHERE tweetid = ". mysqli_real_escape_string($link, $_POST['tweetlikeId'])."";

$queryResult = mysqli_query($link, $queryCount);

 $rowCount = mysqli_fetch_assoc($queryResult); 

     $count = $rowCount['likes'];    /* Count of likes for a tweet */ 

     echo json_encode(array("likeDislike" => $likeDislike, "likeCount" => $count)); 
}

关于javascript - 如何在用户喜欢 MVC 架构中的推文后使用 AJAX 调用显示推文的点赞计数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43990811/

相关文章:

php - dompdf,将 WordPress 页面的内容存储在变量中

PHP GAE 无法在本地运行 SDK

php - Laravel 5.5 在点击时使用 ajax 调用删除项目

php - 如何使用数据表从 Ajax 向 PHP 传递和获取数据

javascript - 内部魔镜警报功能

javascript - 通过动态变量访问 Json 值

javascript - 如何在javascript中对类、函数和函数属性进行分类?

JavaScript 模块模式 : initialise two objects on load

php - 更改产品页面上的正文背景

asp.net - 监听事件: in HTML from . NET