0
私はupvote投稿のスタイルレイアウトを私のウェブサイトに持っている、私は、コードがうまく動作する、より多くの投稿を読み込むajax要求があるが、私はそれらをupvoteしようとするときです。 ajaxリクエストから動的に表示されないものはupvotedできますが、それ以上ロードするとupvotedできません。動的要素のクリック時のJquery
私はid like_postID
を持っているので、コードはupvotedされていることを確認することができます。
私は$(document).on(eventName, selector, function(){});
を見つけました。試してみましたが、それでも動作しますが、ajax呼び出しで要求されていないものだけが動作します。
HERESに私のHTMLコード:
<div class="contain">
<div class="upvote-vetor">
<a href="javascript:void(0)"><img alt="" src="images/upvotes.png" id="like_'.$post['id_post'].'" class="like"></a>
<p id="likes_'.$post['id_post'].'">'.$upvote['upvotes'].' Up Votes</p>
</div>
HERESに私は私のjQuery:
$(document).ready(function(){
// like and unlike click
$(".upvote-vetor").on("click",".like", function(){
var id = this.id; // Getting Button id
var split_id = id.split("_");
var text = split_id[0];
var postid = split_id[1]; // postid
// Finding click type
var type = 1;
// AJAX Request
$.ajax({
url: 'php/upvote.php',
type: 'post',
data: {postid:postid,type:type},
dataType: 'json',
success: function(data){
var likes = data['likes'];
$("#likes_"+postid).text(likes); // setting likes
},
error: function(data){
alert("error : " + JSON.stringify(data));
}
});
});
});
PHPのupvoteコード:事前に
$userid = $id_user;
$postid = $_POST['postid'];
// Check entry within table
$query = "SELECT COUNT(*) AS upvotes FROM upvotes WHERE id_post='$postid' and id_user= '$userid'";
$result = $conn->prepare($query);
$result->execute();
$fetchdata = $result->fetch(PDO::FETCH_ASSOC);
$count = $fetchdata['upvotes'];
if($count == 0){
$insertquery = $conn->prepare("INSERT INTO `upvotes` (`id_upvote`, `id_user`, `id_post`) VALUES (NULL, '$id_user', '$postid');");
$insertquery ->execute();
}else {
$updatequery = $conn->prepare("DELETE FROM `upvotes` WHERE id_user= '$userid' and id_post='$postid'");
$updatequery->execute();
}
// count numbers of like and unlike in post
$query2 = "SELECT COUNT(*) AS upvotes FROM upvotes WHERE id_post='$postid'";
$result2 = $conn->prepare($query2);
$result2->execute();
$fetchlikes = $result2->fetch(PDO::FETCH_ASSOC);
$totalLikes = $fetchlikes['upvotes']. " Up Votes";
$return_arr = array("likes"=>$totalLikes);
echo json_encode($return_arr);
感謝。 :)
成功イベントでは、「var likes = data.likes」にする必要があります。これはJSONオブジェクトではない配列です。 – SaidbakR
@SaidbakR 'data ['likes']'は 'data.likes'と同義です –
upvote.phpコードを共有できますか?私はちょうど興味があります - IDの不一致に関連しているか、適切に生成されていないように思えるからです。あなたがクリックリスナーを添付したオブジェクトを置き換えていないので(親のwouldnにリスナーを付ける本当にそれには影響しません)。私が見たいのは、あなたのAJAXの変数名として 'postid'を使うことですが、あなたの他のPHPは代わりに' id_post'を表示しています。あなたの引用が適切に設定されているかどうかは、PHPがプリントアウトするHTMLを表示するだけでなく、そこにいくつかのPHPを残しているかどうかを知ることも難しいです... –