douhu2525 2018-11-12 19:09
浏览 118

Ajax返回错误意外的令牌<在位置4的JSON中

i'm working on a small "facebook like" application for a school project and i'm having some issue with an Ajax request i'm trying to do a like dislike systeme with Jquery Ajax but i got this error in the console when i debug my "data"

Uncaught SyntaxError: Unexpected token < in JSON at position 4

This is my ajax call :

$(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);
    }
    });     

    });

And this is my likes.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);
}

I've tried using datatype:'json' but it also return me an error , Actually it work to insert value in my DB, but it doesnt handle the change of the css and i've got this error. I'm not use to Ajax this might be simple, sorry if i'm saying a stupid question. Thanks you in advance for you time and messages, see ya.

  • 写回答

1条回答 默认 最新

  • duanpacan9388 2018-11-12 20:53
    关注

    I found the solution thanks you @ADyson, first of all i've changed my php in it's own file and i've also parameterised my queries in the php file, so yes i think the problem was in my index.php thanks you all

    评论

报告相同问题?

悬赏问题

  • ¥15 如何在scanpy上做差异基因和通路富集?
  • ¥20 关于#硬件工程#的问题,请各位专家解答!
  • ¥15 关于#matlab#的问题:期望的系统闭环传递函数为G(s)=wn^2/s^2+2¢wn+wn^2阻尼系数¢=0.707,使系统具有较小的超调量
  • ¥15 FLUENT如何实现在堆积颗粒的上表面加载高斯热源
  • ¥30 截图中的mathematics程序转换成matlab
  • ¥15 动力学代码报错,维度不匹配
  • ¥15 Power query添加列问题
  • ¥50 Kubernetes&Fission&Eleasticsearch
  • ¥15 報錯:Person is not mapped,如何解決?
  • ¥15 c++头文件不能识别CDialog