Я пытаюсь сделать систему, похожую на систему «нравится/не нравится». У меня все настроено, но моя функция jquery.ajax не отправляет данные, которые мне нужны. Функция вызывается, но данные не устанавливаются.
Я добавил функцию для проверки того, вызывается ли оператор isset if, но эта функция не вызывается, поэтому я знаю, что что-то не так с функцией ajax. Я пробовал просматривать другие сообщения о подобных проблемах, но ни одно из этих решений не сработало. Извините, если это просто я глуп, и решение легко.
PHP — community.php — главная веб-страница
<div id = "entries">
<?php foreach($posts as $post): ?>
<div class = "entry">
<div class = "entryInfo">
<img src = "IMAGES/PlaceholderAlbumCover.jpg" alt = "Album Cover" class = "center" height = "200" width = "200">
<div class = "artistInfo">
<h4><?php echo $post['name'] ?></h4>
<p> <?php echo $post['artist'] ?> </p>
</div>
<div class = "votes">
<i <?php if (userVoted($post['id'])): ?>
class = "fas fa-heart vote-btn"
<?php else: ?>
class = "far fa-heart vote-btn"
<?php endif ?>
data-id = "<?php echo $post['id'] ?>" style = "color:#f44242">
</i>
<span class = "voteCount"><?php echo getVotes($post['id']); ?></span>
</div>
</div>
</div>
<?php endforeach ?>
</div>
Javascript — voice.js — Обрабатывает обнаружение кликов и отправку ответа на voice.php.
$.ajax({
url: 'index.php?page=community',
method:'post',
data: {
'action':action,
'post_id':post_id
},
success: function(data) {
if (action == 'unvote') {
$click_btn.toggleClass('far fas');
} else if (action == 'vote') {
$click_btn.toggleClass('far fas');
}
}
});
PHP - voice.php - Обрабатывает серверную часть системы.
if (isset($_POST['action'])) {
consoleLog();
$post_id = $_POST['id'];
$action = $_POST['action'];
switch($action) {
case 'vote':
$query = "INSERT INTO rating_info (user_id, post_id, rating_action)
VALUES ($user_id, $post_id, 'vote')
ON DUPLICATE KEY UPDATE rating_action='vote'";
break;
case 'unvote':
$query = "DELETE FROM rating_info WHERE user_id=$user_id AND post_id=$post_id";
break;
default:
break;
}
mysqli_query($dbconnect, $query);
echo getRating($post_id);
exit(0);
}
Что он должен делать, так это увеличивать или уменьшать количество голосов в базе данных mysql, устанавливая действие для голосования или отмены голосования, но файл js просто никогда не устанавливает данные действия, или PHP-скрипт никогда не может их поймать.
Я вызвал функцию ajax из javascript, просто используя метод jquery '.on("click", function() {'






Вы передаете данные сообщения в javascript как post_id, но пытаетесь получить их в php-скрипте как $_POST['id']
Сделайте это вместо этого: $_POST['post_id']
Я изменил это, но видимых изменений в том, что происходит, не было. Это, вероятно, дало бы мне ошибку, если бы оператор if действительно выполнялся, так что это спасло меня от этого позже, но основная проблема все еще остается.
Вы уверены, что файл php file вызывается? подтвердите, что это правильный маршрут, указанный вами в вызове ajax
Кажется, это сработало. Спасибо. Я должен быть в состоянии понять все остальное.
где вы вызвали функцию для запуска ajax