簡體   English   中英

Ajax返回錯誤JSON中位置4上的意外令牌<

[英]Ajax return error Unexpected token < in JSON at position 4

我正在為學校項目開發小型的“ facebook贊”應用程序,而Ajax請求存在一些問題,我正在嘗試使用Jquery Ajax做不喜歡的systeme,但是當我在控制台中遇到此錯誤時,調試我的“數據”

Uncaught SyntaxError:位置4中的JSON中的意外令牌<

這是我的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);
    }
    });     

    });

這是我的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);
}

我試過使用數據類型:'json',但它也返回一個錯誤,實際上可以在我的數據庫中插入值,但是它不能處理css的更改,並且我遇到了這個錯誤。 我不習慣Ajax,這可能很簡單,對不起,如果我說一個愚蠢的問題。 預先感謝您的時間和消息,請參見。

我找到了解決方案,謝謝@ADyson,首先,我已經在自己的文件中更改了php,並且還在php文件中設置了查詢參數,所以是的,我認為問題出在我的index.php中,謝謝大家

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM