2016-06-23 20 views
0

私は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... 
    }); 
}); 
+0

ブラウザのdeveloper-consoleで[ネットワーク]タブを確認してください。 – tkausl

+0

ありがとうございました!最高のヒント;) –

答えて

0

何の出力コンソールで入手できますか?エラー500?

ajaxを動作させるには、リクエストに応じてcsrfトークンを送信する必要があります。

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

が適切に私はあなたが職人尾を使用することをお勧めしますAJAXリクエストをデバッグするには、これは、Ajaxでの作業時にエラーメッセージを見て、あなたを助けます。

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

+0

ヒントのおかげで、それはコントローラで、欠損によって生成された500エラーでした、私はこれを上記のようにネットワークタブを使用して見つけました –