【问题标题】:Like System with AJAX and Laravel像 AJAX 和 Laravel 的系统
【发布时间】:2018-10-20 18:36:44
【问题描述】:

我正在尝试获取它,以便人们可以通过单击按钮来点赞帖子,这会将一行上传到喜欢表,然后如果他们再次按下按钮,它将删除记录,并且与帖子不同。我遇到的问题是我重新整理了一个教程,其中包括一个用于表示喜欢和不喜欢的布尔值,我没有布尔值并试图重新配置代码以适应它。我遇到的问题是,在我解决了未经授权的错误之后,按钮现在似乎已经失效并且什么都不做。我认为这意味着他们的 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 进行简单的喜欢(发布)/不喜欢(删除)。

【问题讨论】:

  • 你遇到了什么错误?
  • 没有错误显示。该按钮似乎没有做任何事情。
  • 您是在 JS 中直接编写 PHP。该脚本是在单独的 JavaScript 文件中,还是在 &lt;script&gt;.blade 模板中?
  • 抱歉,它在刀片上的脚本中
  • 请求是否发送到后端?

标签: ajax laravel laravel-5 laravel-5.4


【解决方案1】:

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

我建议重写你的 if 条件:

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2013-11-28
    • 2020-09-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-05-15
    • 1970-01-01
    • 2011-11-27
    相关资源
    最近更新 更多