Итак, я извлекаю некоторые значения, используя AJAX и PHP, и затем отображаю их.Это просто система upvote.Меня интересует, как правильно отобразить результаты, чтобы значение обновлялось на стороне клиента.Вот пример кода и того, что он делает ниже.
Вот часть AJAX, которая получает ответ массива из файла PHP в формате json.
function upVoteIncrementValue(postID){
event.preventDefault();
//var upVoteIncrement = $("#upVoteIncrement").val();
$.ajax({
type: "POST",
url: "voting.php",
data: {
"upVoteIncrement": postID,
},
dataType: "json",
cache: false,
success: function(response){
if(response){
var response = $.trim(response);
if(response){
//$('#voteCount').html(response);
$('#voteCount-' + postID).html(response); //This is the working update
}
else {
return false;
}
}
}
});
}
Тогда вот код, который отображает результаты:
public function forumview($query){
$stmt = $this->db->prepare($query);
$stmt->execute();
$results = $stmt->fetchAll();
if($stmt->rowCount()>0){
foreach($results as $row){
echo '<tr>';
echo '<td style="color: #333;"><span class="pull-right">';
if(isset($_SESSION['user_session'])){
echo '<a href="#" class="upVoteArrow" onclick="upVoteIncrementValue('.$row['topic_id'].');"><i class="fa fa-arrow-up"></i></a> ';
}else{
echo '<a href="#" id="loginForm" class="upVoteArrow" data-toggle="modal" data-target="#loginModal"><i class="fa fa-arrow-up"></i></a> ';
}
//This is the part that displays the result but instead of
//displaying each in its respective div it only displays in the top div
echo '<span id="voteCount-'.$row['topic_id'].'">'.$this->cleanNumber($row['topic_likes']).'</span>';
if(isset($_SESSION['user_session'])){
echo ' <a href="#" class="downVoteArrow" onclick="downVoteDecrementValue('.$row['topic_id'].');"><i class="fa fa-arrow-down"></i></a>';
}else{
echo ' <a href="#" id="loginForm" class="downVoteArrow" data-toggle="modal" data-target="#loginModal"><i class="fa fa-arrow-down"></i></a>';
}
Вот изображение того, что он делает

Этоувеличивается ... Эта часть работает нормально, как в 1-м и 2-м примере, но когда я иду, чтобы поднять следующее значение под ним, оно отображает это значение в первом месте (98 перемещается вверх в 1-е место и увеличивается до 99), как можноЯ получаю 98 для увеличения в своем месте и не отображаются в первом месте?Еще раз спасибо и ценим все отзывы.
Вот часть базы данных PHP, если она пригодится всем, кто захочет ее использовать:
if(isset($_POST['upVoteIncrement'])){
$upVoteIncrement = $_POST['upVoteIncrement'];
$stmt = $conn->prepare('UPDATE topics SET topic_likes = topic_likes+1 WHERE topic_id = :id LIMIT 1');
$stmt->bindParam(':id', $upVoteIncrement);
$stmt->execute();
$upVote = $conn->prepare('SELECT topic_likes FROM topics WHERE topic_id = :id');
$upVote->bindParam(':id', $upVoteIncrement);
$upVote->execute();
$upVoteCount = $upVote->fetchAll();
if($upVote->rowCount() > 0){
foreach($upVoteCount as $row){
$up = $row['topic_likes'];
$results[] = $up;
}
}
echo json_encode($results);
}
if(isset($_POST['downVoteDecrement'])){
$downVoteDecrement = $_POST['downVoteDecrement'];
$stmt = $conn->prepare('UPDATE topics SET topic_likes = topic_likes-1 WHERE topic_id = :id LIMIT 1');
$stmt->bindParam(':id', $downVoteDecrement);
$stmt->execute();
$downVote = $conn->prepare('SELECT topic_likes FROM topics WHERE topic_id = :id LIMIT 1');
$downVote->bindParam(':id', $downVoteDecrement);
$downVote->execute();
$downVoteCount = $downVote->fetchAll();
if($downVote->rowCount() > 0){
foreach($downVoteCount as $row){
$down = $row['topic_likes'];
$results[] = $down;
}
}
echo json_encode($results);
}