【问题标题】:laravel AJAX postlaravel AJAX 帖子
【发布时间】:2016-06-23 23:03:26
【问题描述】:

我正在尝试通过 laravel 学习使用 AJAX,我对 AJAX 的了解几乎为零。最近几天我试图解决这个问题。但我无法让它工作......

基本上,当用户单击帖子的点赞按钮时,我想将该请求提交给我的 LikeController。 LikeController 可以正常工作,所以这不是问题,似乎 AJAX 没有将数据传递给控制器​​。有人能指出我做错了什么吗?

我的路线:

Route::post('posts/like', [
    'as' => 'posts.like', 
    'uses' => 'LikeController@likePost'
]); 

我的控制器:

public function likePost(Request $request)
    {
        // Validation
        $this->handleLike('App\Post', $request['postId']);
        return response()->json(['msg' => 'success'], 200);
    }

    public function handleLike($type, $postId)
    {
        $existing_like = Like::withTrashed()->whereLikeableType($type)->whereLikeableId($postId)->whereUserId(Auth::id())->first();

        if (is_null($existing_like)) {
            Like::create([
                'user_id'       => Auth::id(),
                'likeable_id'   => $postId,
                'likeable_type' => $type,
            ]);
        } else {
            if (is_null($existing_like->deleted_at)) {
                $existing_like->delete();
            } else {
                $existing_like->restore();
            }
        }
    }

还有 JS:

$('.like').on('click', function(event) {
    event.preventDefault();

    postId = event.target.dataset['postid'];

    console.log(postId)
    console.log(token) 

    $.ajax({
        method: 'POST',
        url: urlLike,  // Gets defined in the view
        data: {postId: postId, _token: token}
    }).done(function(msg) {
           console.log(msg); // never even reached this stage...
    });
});

【问题讨论】:

  • 检查浏览器开发者控制台中的网络标签。
  • 谢谢!!有史以来最好的提示;)

标签: javascript jquery html ajax laravel


【解决方案1】:

您在控制台中得到什么输出?错误 500?

要使 ajax 工作,您需要将 csrf 令牌与您的请求一起发送。

https://laravel.com/docs/master/routing#csrf-x-csrf-token

为了正确调试 ajax 请求,我建议您使用 artisan tail,这有助于您在使用 ajax 时查看错误消息。

https://github.com/spatie/laravel-tail

【讨论】:

  • 感谢您的提示,这是控制器中缺少 ) 产生的 500 错误,我按照上面的建议使用网络选项卡找到了这个
猜你喜欢
  • 2015-04-07
  • 2019-08-12
  • 2018-11-01
  • 1970-01-01
  • 2020-06-16
  • 2017-07-23
  • 2023-03-24
  • 2018-12-13
  • 2018-12-02
相关资源
最近更新 更多