у меня не получается в js установить условие - если пользователь проголосовал, то вывести сообщение "Вы уже голосовали". На сервере все работает хорошо, но = только с перезагрузкой страницы. Я так понимаю, в коде PHP надо сообщение об ошибке установить в переменную и эту переменную передать через json_encode в js. Как это сделать?
PHP-код обрабатывает клик по ссылке
$comment_id = !empty($_GET['id']) ? (int)$_GET['id'] : null;
if ($comment_id) {
// проверяем, не голосовал пользователь ранее
$sql = \R::getAll("SELECT count(*) FROM post_comment_votes WHERE user_id = {$_SESSION['user']['id']} AND post_comment_id = {$comment_id}");
if ($sql[0] > 0) {
$_SESSION['error'] = 'Вы уже голосовали';
}
// записываем ID пользователя и комментария
\R::exec("INSERT INTO post_comment_votes (user_id, post_comment_id) VALUES ({$_SESSION['user']['id']}, {$comment_id})");
}
HTML-код (ссылка в виде кнопки "лайк")
<a data-id="<?=$id;?>" class="counter pull-right"><i class="fa fa-thumbs-up"></i>
<span><?php if ($comment['vote'] == 0) echo ''; ?><?=$comment['vote'];?></span>
</a>
JS-код (отправляет аякс запрос на сервер)
$('.like-counter').on('click', '.counter', function (e) {
e.preventDefault();
var id = $(this).data('id');
var a = this;
$.ajax({
url: location.href,
data: {id: id},
type: 'GET',
success: function () {
var count = parseInt($(a).find('span').text()) || 0;
$(a).find('span').text(count + 1);
//console.log(count);
},
error: function () {
alert('Error, try again.');
}
});
});