Я пытаюсь сделать кнопку "нравится / не нравится" в ajax.Ajax отправляет мои данные в отдельный файл, где они сохраняются в базе данных, и этот файл возвращает успешный ответ {"status":"success","message":"Like has been saved.","data":{"like":"1"}}
, полученный мной из окна ответа сети Chrome.Однако код в $ajax(...)
.done не работает
У меня есть console.logged и var.dumped каждый бит кода, который я мог бы.мои данные отправляются в мою базу данных, что должно означать, что SQL и тому подобное класс является правильным.Я также попытался просто console.log
дать ответ «res» и поместить остальные в комментарии, но это опять же ничего не дает мне
<div>
<a href="#" data-id="<?php echo $post->id ?>" class="like">Like</a>
<a href="#" data-id="<?php echo $post->id ?>" class="dislike" style="display:none;">Dislike</a>
<span class='likes' data-id="<?php echo $post->id ?>"><?php echo $post->getLikes(); ?></span> people like this
</div>
$("a.like, a.dislike").on("click",function(e){
var postId = $(this).data("id");
if($("a.like")){
var type = 1;
}else if($("a.dislike")){
var type = 0;
}
var elLikes = $(this).siblings(".likes");
var likes=elLikes.html();
$.ajax({
method: "POST",
url: "ajax/postlike.php",
data: {postId: postId, type:type},
dataType: "json",
})
.done(function( res ) {
console.log(res);
if(res.status=="succes"){
console.log(res);
if(res.data.like=="1"){
likes++;
elLikes=html(likes);
$("a.like").css("display","none");
$("a.dislike").css("display","inline-block");
} else if(res.data.like=="0"){
likes--;
elLikes=html(likes);
$("a.dislike").css("display","none");
$("a.like").css("display","inline-block");
}
}
});
e.preventDefault();
});
if(!empty($_POST)){
try {
$postId=$_POST['postId'];
$type=htmlspecialchars($_POST['type']);
$userId=$_SESSION['user_id'];
$l = new Like();
$l->setPostId($postId);
$l->setUserId($userId);
$l->setType($type);
$l->save();
$res = [
"status" => "success",
"message" => "Like has been saved.",
"data" =>[
"like" => $type
]
];
}catch (trowable $t) {
$res = [
'status' => 'failed',
'message' => $t->getMessage()
];
}
echo json_encode($res);
var_dump($res);
}
то, что я ожидал, былочто Ajax отправил данные JSON в код php, который поместил их в базу данных, и это работает.Затем дает успешный ответ на Ajax, также работает.Затем Ajax будет выключать кнопки «нравится / не нравится», добавляя или выбирая «1» из диапазона «лайки».Однако он абсолютно ничего не делает
Я почти на 100% уверен, что проблема в том, что я что-то глупо вижу, но я действительно не могу ее найти.