0

ユーザーの投稿にいいねボタンを作成しました。いいねの数を印刷しようとしています。[いいね] ボタンをクリックした瞬間、ページを更新しない限り [いいね] ボタンの横には何も表示されず、投稿の [いいね] クリックの数が表示されます (4)。

私が直面している問題は、データを収集し、それを function_user.php という別のページにある関数に送信する LIKE_DO.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>";
}

また:X.phpを呼び出しているので、X.phpからY.phpの関数を呼び出します。Y.php の関数は、探している値を実際に認識しています。

Y.php で編集されたX.php 値を呼び出しているechoため、スクリプトには表示されません。

解決策 - 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 に答える