【发布时间】:2020-04-29 14:56:34
【问题描述】:
两个 JQuery Ajax 调用。首先从 MySQL 中返回用户消息,该消息的点赞数和用户点赞该消息的按钮。此请求有效。
第二个 Ajax 请求从用户按下第一个 Ajax 请求创建的类似按钮触发。但是,按下按钮时似乎没有任何反应(没有错误)。尝试将结果作为警报或在控制台中查看,但没有任何反应。
Ajax 请求 1:
dataType: 'json',
success: function(response) {
$.each(response, function() {
$.each($(this), function(i, item) {
var mycss = (item.Type == 1) ? ' style="color: #ffa449;"' :'';
$( '.content' ).append( '<div class="post"><div class="post-text"> ' +item.MessageText+ ' </div><div class="post-action"><input type="button" value="Like" id="like_'+item.ID+'_'+item.UserID+'" class="like" '+mycss+' /><span id="likes_'+item.ID+'_'+item.UserID+'">'+item.cntLikes+'</span></div></div>');
});
});
}
生成的html示例:
<div class="post"><div class="post-text"> This is message example text. </div><div class="post-action"><input type="button" value="Like" id="like_1_f6khb11ldm2hek6bvs3qd2oef6" class="like"><span id="likes_1_f6khb11ldm2hek6bvs3qd2oef6">12</span></div></div>
Ajax 请求 2:
dataType: 'json',
success: function(data){
var likes = data['likes'];
var type = data['type'];
$("#likes_" + postid + "_" + userid).text(likes);
if(type == 1){
$("#like_" + postid + "_" + userid).css("color","lightseagreen");
}
if(type == 0){
$("#like_" + postid + "_" + userid).css("color","#ffa449");
}
}
编辑:按要求点击第二个 Ajax 请求代码:
$(".like").click(function(){
【问题讨论】:
-
看来您有错字:
$("#likes_" + postid + "_" + userid).text(likes);。应该是#like_。此外,在使用以下建议后,您是否看到已发送请求? -
@EternalHour 谢谢。所以跨度有喜欢和按钮喜欢类名。还是我错过了理解。我已经尝试过下面的方法,但可能语法错误,因为它不起作用。我在下面的答案中尝试的代码显示在该答案下方的 cmets 中。再次感谢。
-
哦,我明白了,没注意到。你会提供你正在修改的外部 HTML 吗?
-
@EternalHour 所以有一个 div 有一个名为“content”的类,它包裹着所有的消息和点赞按钮。即它是静态的。你指的是这个吗?
-
是的。在这种情况下,
$(".content").on("click",".like",function(){}应该可以工作。.content类是否有多个元素?