我为我的用户帖子创建了一个类似按钮。我正在尝试打印出喜欢的数量。当我单击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.")";
}
}
答案 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请求。