ajax - 像 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;
}
请帮助在此代码中找到问题,或者将我指向一个没有布尔值的类似系统的方向,而只需使用 Laravel 和 AJAX 进行简单的喜欢(发布)/不喜欢(删除)。
解决方案
我认为问题在于您正在执行布尔/对象同情。
我建议重写你的 if 条件:
if( !is_null($liked)){...}
推荐阅读
- mongodb - 使用nestjs在mongodb中保持时区偏移的时间
- django - 如何确定请求对象是从 Web 浏览器还是 REST API 调用发起的?
- javascript - 使用 redis/vue 发布键值
- node.js - 尽管在 Windows 10 (Chrome) 的 script-src 中定义了 script-src-elem,但仍被阻止
- sql - 如何从 Oracle SQL 中的时间戳变量中获取小时和分钟
- reactjs - 如何在 React Typescript 中允许某些道具组合?
- sql - 在 sql developer 的简单内部联接中获取 4 行而不是 2 行
- unity3d - 如何在 Unity 中使用多个按钮自动隐藏/打开面板?
- java - 使用 UDF 函数的 Apache Spark 数据帧重新分区
- graphql - 如何为 GraphQL 中的参数提供一个值?