我有这个脚本。如果主题已被喜欢,它的效果很好,但如果它从未被标记为已被喜欢,则需要双击它才能显示用户喜欢的内容。我如何让它第一次工作。它是旧谈话的延续,我从这里得到了一些很大的帮助old conversation
$(document).ready(function(){
$("#like<? echo $msgID;?>").click(function(){
var isLike = $(this).text() === "Like",
url = isLike ? "status-updates/like.php?status_id=<? echo $msgID;?>&user=<? echo $session->username;?>" : "status-updates/unlike.php?status_id=<? echo $msgID;?>&user=<? echo $session->username;?>";
$.post(url + "?status_id=<? echo $msgID;?>&user=<? echo $session->username;?>", $(this).serialize());
setTimeout(function () {
$("#likeDiv<? echo $msgID;?>").load('status-updates/like-count.php?status_id=<? echo $msgID;?>');
$(".whoLikes<? echo $msgID;?>").load('status-updates/who-likes.php?status_id=<? echo $msgID;?>');
$("#like<? echo $msgID;?>").text(isLike ? "Unlike" : "Like");
}, 500);
});
});
答案 0 :(得分:1)
我怀疑你的问题可能归结为以下几点:
var isLike = $(this).text() === "Like";
url = isLike ? "status-updates/like.php?status_id=<? echo $msgID;?>&user=<? echo $session->username;?>" : "status-updates/unlike.php?status_id=<? echo $msgID;?>&user=<? echo $session->username;?>";
或者,以非常长的滚动方式,
var isLike = $(this).text() === "Like";
url = isLike ? <like URL> : <unlike URL>;
换句话说,当文本已经显示“赞”时,POST
编辑的网址实际上是“喜欢”的网址。
顺便提一下,有一种更简洁的方法来执行您使用setTimeout
调用的延迟,这似乎是等待半秒 - 足够,您希望post
能够完成 - 跑步前。相反,您可以使用$.post
的第三个参数
$.post( <url>, <data>,
function () {
$("#likeDiv<? echo $msgID;?>").load('status-updates/like-count.php?status_id=<? echo $msgID;?>');
$(".whoLikes<? echo $msgID;?>").load('status-updates/who-likes.php?status_id=<? echo $msgID;?>');
$("#like<? echo $msgID;?>").text(isLike ? "Unlike" : "Like");
}
);