就像带有AJAX和Laravel的系统一样



我正在尝试获取它,以便人们可以通过单击按钮来喜欢帖子,这将向喜欢表上传一行,然后如果他们再次按下按钮,它将删除记录,与帖子不同。我遇到的问题是我已经重新编写了一个教程,其中包含一个表示喜欢和不喜欢的布尔值,我没有布尔值,并试图重新配置代码以适应这种情况。我遇到的问题是,在我整理出未经授权的错误后,按钮现在似乎已死并且没有任何作用。我认为这意味着 laravel 代码存在问题。任何人都可以看到为什么按钮没有响应并指出我喜欢(发布(数据库的方向,检查喜欢并在按下按钮并且该行存在时删除?

这是我到目前为止所拥有的:

Table: 
likes: id, post_id, user_id, timestamps()

.HTML:

<a class="btn btn-not-liked like">Liked?</a>

AJAX JS:

var postId = 0;
var token = '{{ Session::token() }}';
var urlLiKes = '{{ route('likes') }}';
$('.like').on('click', function(event){
event.preventDefault();
postId = event.target.parentNode.parentNode.dataset['postid'];
var isVisit = event.target.previousElementSibling == null;
$.ajax({
method: 'POST',
url: urlLikes,
data: {isLikes: isLikes, postId: postId, _token: token}
})
.done(function() {
});
});

.PHP:

$post_id = $request['postId'];
$is_visit = $request['isLike'] === 'true';
$post = Post::find($post_id);
if (!$post) {
return null;
}
$liked = Auth::user()->likes()->where('post_id', $post_id)->first();
if($liked == $is_like){
$liked->delete();
return null;
}
else{
$liked = new Like();
}
$liked->user_id = Auth::user();
$liked->post_id = $post->id;
$liked->save();
return null;
}

请帮助找到此代码中的问题,或者为我指出一个没有布尔值的类似系统的方向,而只是一个简单的 like(post(/unlike(delete( 与 Laravel和 AJAX。

我认为问题是您正在执行布尔/对象同情。

我建议重写你的 if 条件:

if( !is_null($liked)){...}    

最新更新