私はlarvelでAJAXを使って学びたいと思っています。私のAJAXに関する知識は実質的にゼロです。ここ数日、私はこれを解決しようとしました。しかし、私はそれを働かせることはできません...laravel AJAX投稿
基本的にユーザーがポストのようなボタンをクリックすると、私はLikeControllerにそのリクエストを提出したいと思います。 LikeControllerは動作しないので、AJAXからコントローラにデータが渡されないようです。誰かが間違っていることを指摘できますか?
マイルート:
Route::post('posts/like', [
'as' => 'posts.like',
'uses' => '[email protected]'
]);
マイコントローラ:
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...
});
});
ブラウザのdeveloper-consoleで[ネットワーク]タブを確認してください。 – tkausl
ありがとうございました!最高のヒント;) –