Ошибка возврата Ajax Неожиданный токен <в JSON в позиции 4 - PullRequest
0 голосов
/ 12 ноября 2018

Я работаю над небольшим приложением, похожим на 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, это может быть просто, извините, если я говорю глупый вопрос. Заранее благодарим вас за ваше время и сообщения, увидимся.

1 Ответ

0 голосов
/ 12 ноября 2018

Я нашел решение, спасибо вам @ADyson, во-первых, я изменил свой php в его собственном файле и также параметризовал свои запросы в файле php, так что да, я думаю, что проблема была в моем index.phpспасибо вам всем

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...