与使用AJAX和Laravel

时间:2018-05-10 13:12:43

标签: ajax laravel laravel-5 laravel-5.4

我正在努力获取它,以便人们可以点击按钮点击上的帖子,将一行上传到likes表,然后如果他们再次按下按钮,它将删除记录而不像帖子。我遇到的问题是我已经重新开发了一个教程,其中包含一个类似和不喜欢的布尔值,我没有布尔值,并试图重新配置代码以适应这一点。我遇到的问题是,在我解决了未经授权的错误后,按钮现在似乎已经死了,什么也没做。我认为这意味着他们的问题与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(post)/不同(删除)。

1 个答案:

答案 0 :(得分:0)

我认为问题在于你表现出布尔/对象的同情心。

我建议改写你的if条件:

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