0

我为我的用户帖子创建了一个赞按钮。我正在尝试打印喜欢的数量。在我点击 LIKE 按钮的那一刻,除非我刷新页面,否则在 Like 按钮旁边什么都没有显示,然后它会显示帖子的点击量 (4)。

我面临的问题是我有一个 LIKE_DO.php 页面,该页面收集数据然后将其发送到另一个页面中名为 function_user.php 的函数。无论如何我可以使用 Ajax 来获取喜欢的打印值,我将如何去做?我真的很想在我已经拥有的 ajax 之上构建,插入数据并调用打印的喜欢以节省混淆并不得不重新编写我的所有代码。

喜欢按钮

echo "<div class='stream_option'><a id='likecontext_".$streamitem_data['streamitem_id']."' style='cursor:pointer;' onClick=\"likestatus(".$streamitem_data['streamitem_id'].",this.id);\">";

当前的 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.PHP

<?php
session_start();
require"rawfeeds_load.php";
if(isset($_POST['streamitem_id'])){

$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 - (用我打印的喜欢,我需要用 ajax 来获得)

    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){
        return "(".$check2.")";
        }
}
4

2 回答 2

1

假设user_core::do_like()将喜欢的数据添加到数据库并user_core::check_liked()返回为该帖子做出的喜欢的数量。

(如我错了请纠正我)

if(user_core::do_like($_SESSION['id'],$_POST['streamitem_id'],1)){
echo $check; // as your user_core::check_liked() function returns number of likes.
}else{
echo "<script>alert('Error liking post');</script>";
}

ALSO:由于您正在调用 X.php 并且从 X.php 调用 Y.php 中的函数。Y.php 中的函数实际上知道您要查找的值。

由于您正在调用在 Y.php 中echo编辑的 X.php 值,因此您的脚本将不可见。

解决方案 - 如果您正在调用 X.php,则将 Y.php 设为 X.phpreturn的值,并将echo您的值设为 X.php 中的值。

+++++++++++++++++++++++++

更新根据当前的最新问题:

$.post将您的处理程序更改为

$.post("../include/like_do.php", { streamitem_id: postid},function(data){
//see the parameter data in this function. Data contains whatever that you echo in your php file.

$("#yourLikeDisplayDivId").html(data+" Likes");

} );
于 2012-07-28T10:14:10.000 回答
0

如果您只需要知道有多少人喜欢该页面: 使用 XML 或 JSON 从脚本中检索数据。这样做,您可以从脚本中检索许多数据。例子:

<?php 
$xml = '<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<likes>
  <like>
    <number>'.getNumOfLikes().'</number>
  </like>
</likes>' ;
echo $xml ; 
?>

创建一个简单的 ajax 请求:

var req = new XMLHttpRequest() ;
var url = "../include/like_do.php" ;

function execute(data){
  req.open("POST", url, true) ;
  req.setRequestHeader("Content-type", "application/x-www-form-urlencoded") ;
  req.onreadystatechange = function(){
    if (req.readyState == 4 and req.status == 200){
      var xml = req.responseXML ; //Get the xml response
      document.getElementById("numOfLikes").innerHTML = xml.getElementsByTagName()("number")[0].firstChild.nodeValue ; //get the value of the first "number" tag
      req.abort ;
    }
  req.send(data)
  }
}

execute("likeId=1234&anything=123") ;

您在 PHP 脚本中所做的其他事情(显示什么,多少内容)。我希望这会有所帮助,因为您可以了解如何使用 AJAX 请求。

于 2012-07-28T10:40:46.440 回答