喜欢用ajax发布/打印结果

时间:2012-07-28 10:04:41

标签: php javascript jquery html ajax

我为我的用户帖子创建了一个类似按钮。我正在尝试打印出喜欢的数量。当我单击LIKE按钮时,除了我刷新页面之外没有任何内容显示在相似按钮旁边,然后它显示帖子具有的相似点击量(4)。

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

Like Button

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

CURRENT 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.")";
        }
}

2 个答案:

答案 0 :(得分: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>";
}

另外: 因为你正在调用说X.php而从X.php调用你在Y.php中调用一个函数。 Y.php中的函数实际上知道你要找的值。

由于您正在调用Y.php中的echo编辑的X.php值,因此您的脚本将无法看到这些值。

解决方案 - 如果您正在调用X.php,请将Y.php return的值设置为X.php,并将值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");

} );

答案 1 :(得分: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请求。