Я работаю над небольшим приложением, похожим на Facebook, для школьного проекта, и у меня возникли проблемы с запросом Ajax.
Я пытаюсь сделать подобное неприязнь с Jquery Ajax, но я получил эту ошибку в консоли, когда я отлаживаю свои «данные»
Uncaught SyntaxError: Неожиданный токен <в JSON в позиции 4 </p>
Это мой вызов ajax:
$(document).ready(function(){
$('.like-btn').on('click', function(){
var post_id = $(this).data('id');
$clicked_btn = $(this);
if ($clicked_btn.hasClass('glyphicon glyphicon-thumbs-up')) {
var action = 'like';
} else if($clicked_btn.hasClass('glyphicon glyphicon-thumbs-up liked')){
var action = 'unlike';
}
$.ajax({
type: "POST",
url: 'index.php?action=likes',
data:{
'action': action,
'post_id': post_id
},
success: function(data){
alert("succes");
console.log(data);
res = JSON.parse(data);
if (action == "like") {
$clicked_btn.removeClass('glyphicon glyphicon-thumbs-up');
$clicked_btn.addClass('glyphicon glyphicon-thumbs-up liked');
} else if(action == "unlike") {
$clicked_btn.removeClass('glyphicon glyphicon-thumbs-up liked');
$clicked_btn.addClass('glyphicon glyphicon-thumbs-up');
}
// Affiche le nombre de like dislike
$clicked_btn.siblings('span.likes').text(res.likes);
$clicked_btn.siblings('span.dislikes').text(res.dislikes);
// Change le style du boutton suivant si user click dessus
$clicked_btn.siblings('glyphicon glyphicon-thumbs-
down').removeClass('glyphicon glyphicon-thumbs-
down').addClass('glyphicon glyphicon-thumbs-down disliked');
}, error: function(jq,status,message) {
alert('A jQuery error has occurred. Status: ' + status + ' - Message: '
+ message);
console.log(status + message);
}
});
});
А это мой лайк.php:
<?php
function getRating($id)
{
global $pdo;
$rating = array();
$likes_query = "SELECT COUNT(*) FROM rating_info WHERE post_id = ? AND
rating_action='like'";
$dislikes_query = "SELECT COUNT(*) FROM rating_info
WHERE post_id = ? AND rating_action='dislike'";
$likes_rs = $pdo->prepare($likes_query);
$dislikes_rs = $pdo->prepare($dislikes_query);
$likes_rs->execute(array($id));
$dislikes_rs->execute(array($id));
$likes=$likes_rs->fetch();
$dislikes=$dislikes_rs->fetch();
$rating = [
'likes' => $likes[0],
'dislikes' => $dislikes[0]
];
return json_encode($rating);
}
if (isset($_POST['action'])) {
$user_id=$_SESSION['id'];
$return = $_POST;
$post_id = $_POST['post_id'];
$action = $_POST['action'];
switch ($action) {
case 'like':
$sql="INSERT INTO rating_info (user_id, post_id, rating_action)
VALUES ($user_id, $post_id, 'like')
ON DUPLICATE KEY UPDATE rating_action='like'";
break;
case 'dislike':
$sql="INSERT INTO rating_info (user_id, post_id, rating_action)
VALUES ($user_id, $post_id, 'dislike')
ON DUPLICATE KEY UPDATE rating_action='dislike'";
break;
case 'unlike':
$sql="DELETE FROM rating_info WHERE user_id=$user_id AND
post_id=$post_id";
break;
case 'undislike':
$sql="DELETE FROM rating_info WHERE user_id=$user_id AND
post_id=$post_id";
break;
default:
break;
}
$q = $pdo->prepare($sql);
$q->execute();
echo getRating($post_id);
exit(0);
}
Я пытался использовать тип данных: 'json', но он также возвращает мне ошибку,
На самом деле это работает, чтобы вставить значение в моей БД, но он не обрабатывает изменение CSS, и я получил эту ошибку.
Я не использую Ajax, это может быть просто, извините, если я говорю глупый вопрос.
Заранее благодарим вас за ваше время и сообщения, увидимся.