打印如计数而不刷新页面

时间:2012-07-26 20:35:39

标签: php javascript jquery ajax

我的网站上有一个喜欢/不同的帖子,当我点击“喜欢”按钮时,我希望check2的值显示在旁边,就像没有我必须刷新页面才能看到它一样。目前我会点击,它会插入数据,但只会在页面刷新时显示。我对这种东西毫无希望。

以下是执行顺序的代码。

感谢您的帮助。

张贴

echo "<div class='stream_option'><a id='likecontext_".$streamitem_data['streamitem_id']."' style='cursor:pointer;' onClick=\"likestatus(".$streamitem_data['streamitem_id'].",this.id);\">";
if($checklikes>0){
echo "Unlike";
}else{
echo "Like";
}
echo "</a> ";
$check2 = user_core::print_like_count($streamitem_data['streamitem_id']);
if($check2>0){
echo "(".$check2.")";
}

Ajax功能

function likestatus(postid,contextid){
var obj = document.getElementById(contextid);
if(obj.innerHTML=="Like"){
obj.innerHTML="Unlike";
}else{
obj.innerHTML="Like";
}
$.post("../include/like_do.php", { streamitem_id: postid} );
}

LIKE_DO     

$check = user_core::check_liked($_SESSION['id'],$_POST['streamitem_id'],1);

user_core::do_like($_SESSION['id'],$_POST['streamitem_id'],1);

    if($check==0){
    ?>
    <?php
    }else{
    ?>
    <?php
    }
}
else{
echo "<script>alert('Error liking post');</script>";
}
?>

USER_CORE

 function check_liked($id,$streamid,$value){

            $check      =   "SELECT feedback_id FROM streamdata_feedback WHERE feedback_streamid=$streamid AND feedback_userid=$id AND feedback_rating=$value";
            $check1     =    mysql_query($check);
            $check2     =    mysql_num_rows($check1);
        return $check2;
        }

        function print_like_count($streamid){
                $check      =   "SELECT feedback_id FROM streamdata_feedback WHERE feedback_streamid=$streamid AND feedback_rating=1";
                $check1     =    mysql_query($check);
                $check2     =    mysql_num_rows($check1);
                if($check2>0){
                echo "(".$check2.")";
                }
        }

1 个答案:

答案 0 :(得分:1)

您正在寻找的是使用DHTML提交的AJAX提交来改变喜欢的值。

<script language="javascript">
    $(".likeButton").click(function() {
        $.post("likeProcessor.php", {
            id: $(this).attr('id')
        }, function(data) {
            $("#likeIndicator" + $(this).attr('id')).html(data);
        });
</script>

然后你的likeProcessor脚本将只返回该项目的喜欢数量。

注意:这是伪代码,可让您了解需要发生的事情。有关jQuery和Ajax的更多信息,RTM分别位于http://www.w3schools.com/jquery/default.asphttp://www.w3schools.com/ajax/default.asp