2015-12-30 194 views
1

伙计们正在尝试创建像fb一样的喜欢和不喜欢的按钮。我列出了我在PHP中列表循环的帖子。我只想要一个按钮,如果喜欢设置蓝色,如果不喜欢设置正常(默认)的颜色。 所有喜欢的记录都存储在db id | account_id | item_id |等。Jquery ajax喜欢和不喜欢按钮

我有一个PHP的控制器,用于喜欢女巫保持2种主要方法 的addAction()deleteAction()。第一个和第二个动作只接受ajax请求并添加和删除数据库中的记录。

所以我的问题是,当我点击一个按钮颜色没有改变时,Ajax完成(成功和complite)。我认为我做得很好,但方式不对。当我点击Like记录被保存但活的颜色改变。我也用jQuery尝试负载()但我只可以加载的所有帖子和后的setInterval他回到我的文章列表的顶部:/

这里是我的这个jQuery:

// Submit post like 
submitPostLike: function() { 

    var likes = 0; 
    var likeBtn = $(".like-btn"); 

    likeBtn.click(function() { 

     var postId = $(this).attr("rel"); 

     $.ajax({ 
      type: "post", 
      cache: false, 
      url: baseurl + "/like/addAction", 
      data: { 
       item_id: postId, 
      }, 
      success: function(response) { 
       console.log("post liked -" + postId); // debug 
      }, 
      complete: function() { 
       $(".like-txt").css("color", "blue"); 
       setTimeout(Post.updatePostList(), 1000); 
       console.log("scheduler fired"); // debug 
      }, 
      error: function(response, s, e) { 
       alert(response.responseText); 
      }, 
     }); 
    }) 
}, 

删除行动是一些我不会说的。

的Html女巫在PHP中

<?php if(hasLiked($post->post_id, $acc_id)): ?> 
    <button type="button" id="post_like_btn" rel="<?= $post->post_id;?>" class="dislike-btn btn btn-xs btn-default"> 
    <div class="like-txt"><i class="glyphicon glyphicon-thumbs-up"></i> Like </div> 
    </button> 
<?php else : ?> 
    <button type="button" id="post_dislike_btn" rel="<?= $post->post_id;?>" class="like-btn btn btn-xs btn-default"> 
    <i class="like glyphicon glyphicon-thumbs-up"></i> Dislike 
    </button> 
<?php endif; ?> 

hasLiked()是checkig PHP函数,如果该职位已经通过该帐户喜欢循环创建。如果帐户存在db显示不喜欢按钮。

现在如何生活刷新像load()函数时,有人喜欢帖子?所有这些工作,但只有当我刷新页面时,文本才是蓝色。

回答

1

HTML正在服务器端处理并提供给客户端。如果hasLiked返回false,则类别为like-txt的div将不会出现在所提供的HTML中。因此,当您尝试在Ajax调用的complete方法中访问它时,什么都不会发生。无论hasLiked返回的值是否为假,您都需要使该元素出现在Dom中。你可以隐藏它,但它需要成为Dom的一部分。

+1

你是对的,它必须是我的一部分DOM – Ivan