我正在使用 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/