每个评论都显示不喜欢的内容? (Codeigniter& Ajax)

时间:2014-08-13 14:13:59

标签: php jquery ajax codeigniter

我正在使用codeigniter实现照片管理系统。 我陷入了以下问题

我有一个页面,其中包含不同人对特定照片的评论。其他人可以喜欢这些评论。

HTML视图

<div class="container"> 
    <?php foreach($comments as $comment):?>
    <div class="row" style="margin-bottom:0">
        <div class="col-sm-4 col-xs-12 comment">
            <p><?php echo ucfirst($comment['username'])?> says</p>
            <p class="content"><?=$comment['comment']?></p>
            <p>on <?=$comment['date_time']?></p>
            <!-- above display info about the comment -->
        </div>

    </div>

    <!-- likes --> 
    <div class="row" style="margin-top:0">
        <input hidden="" name='comment_id' class="comment_id" name="comment_id" value="<?php echo $comment['id'];?>">
        <input  hidden="" name="user_id" class="user_id" name="user_id" value="<?php echo $this->session->userdata['logged_in']['id']?>">
        <span   class="glyphicon glyphicon-thumbs-up like" style="margin-right: 5px;cursor: pointer"></span><span class="like-count" style="margin-right: 15px"></span>


    </div>


    <?php endforeach;?>

</div>

我需要在特定评论中显示每个人的总喜欢。 (例如在facebook中我们看到有90个喜欢等等。)

jQuery:这是我的ajax调用,也在同一视图中。

$(function(){ //Document is now ready
    $(".like").each(function(){
        var comment_id=$(this).siblings(".comment_id").val(); //Getting comment id

        $.ajax({
           method:"POST",
           url:"<?php echo site_url('viewer/display_likes_count');?>",
           data:"comment_id="+comment_id,
           success:function(data){          
               $(".like-count").html(data); //updating total counts
           }
       });
    });
}); 

控制器:

 public function display_likes_count(){
        $comment_id=  $this->input->post("comment_id");
        $result=  $this->Viewer_model->count_likes($comment_id);
        echo $result['likes_count'];

    }

型号:

 public function count_likes($comment_id){
         $this->db->select("COUNT(*) AS likes_count");
         $this->db->from("likes");
         $this->db->where("comment_id", $comment_id);
        $result= $this->db->get();  
        return $result->row_array();
    }

当我加载一张特定的照片时,所有评论总共有0个赞,但实际上每个评论都有不同数量的喜欢

注意 - 我在成功函数中发出警报数据。然后我想要的结果得到正确的警告,但是当我更新&#34; like-count&#34;跨度它说0.为什么。我不是用jQuery正确选择元素。

我尝试了$(this).siblings(".like-count").html(data);,但所有评论的结果仍为0.

请告诉我哪里出错了?

1 个答案:

答案 0 :(得分:1)

修改:您尝试了$(this).siblings(".like-count").html(data);。如果你使用self变量代替this,就像我在下面的代码中所做的那样,这应该有效。

$(".like-count").html(data);

此行将使用data更新页面上的所有相同计数。所以你的FOR循环的最后一次迭代可能有0个喜欢,然后在所有行上更新。

试试这个:

$(function(){ //Document is now ready
    $(".like-count").each(function(){
        var comment_id=$(this).siblings(".comment_id").val(); //Getting comment id
        var self = $(this);
        $.ajax({
           method:"POST",
           url:"<?php echo site_url('viewer/display_likes_count');?>",
           data:"comment_id="+comment_id,
           success:function(data){          
               $(self).html(data); //updating total counts
           }
       });
    });
}); 

我们将在.like上进行循环,而不是遍历.like-count类。然后我们可以将该元素的HTML设置为等于喜欢的数量。