Laravel

Laravelからajaxで非同期通信した際にInternal Server Error 500が出た時の問題箇所探し

※本ページはアフィリエイトプログラムによる収益を得ています

Laravelで制作したブログサイトで、記事へのいいねボタンを独自に設けるという案件がありました。その際、いいねボタンを押した時にページがリロードされるのは野暮ったいので、画面遷移させずにjQueryのajaxを使って非同期通信でいいね数を1増やすということを行いました。

しかし、どうもうまく動かず、Internal Server Error 500というのが出てしまいます。

この500番のエラーというのは、サーバーとの通信処理中のどこかでエラーが出ていることを示しています。

ajax通信の場合の書き方として、処理がうまくいった場合にはdone、失敗した場合にはfailという記述分けをするパターンが多いかと思いますが、Internal Server Error 500 が出ている場合は、処理失敗なのでfailの方に処理が進行されることと思います。

そうなると、POST通信をさせているPHP側の記述内に問題があるわけですが、ajax通信でアクセスしているためにPHP側のエラー文言などが見えず問題箇所が特定できず、私はここで何時間も悩みましたね。

結論

PHPの問題箇所の特定のために、一度ajaxでの非同期処理はやめて、同期処理つまりformタグを使いPOST通信で処理するかたちを書いて動作確認をしましょう。そうすると、Laravelの素敵なデバッグ機能が働きPHP側のエラー箇所が特定できるかもしれません。私はそれでエラー箇所を特定し修正したのちに、再度ajaxでの非同期通信に記述をし直したらようやく問題が解決しました

ajaxなどの非同期通信でエラーが出た場合は、通常の同期通信(formを使ったpost通信など)で試して問題箇所を探る

ということですね。
当たり前っちゃ当たり前なんですけどね。

最終的にはこちらの記事の最後の一文に救われました、ありがとうございます。
▼LaravelのAjax通信エラー 500 (Internal Server Error)
https://qiita.com/dam-san/items/36bcd031f461b09f42cf