【发布时间】: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