2015-12-30 159 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