Laravel 6 – Ajax Request Tutorial
嗨大家好,今天要來介紹該如何在Laravel 6中使用Ajax( Asynchronous JavaScript and XML),本篇適合對於Ajax已有基本概念的讀者,若還不是很清楚的讀者建議可以先自行google相關資訊了解其運作原理及用途。
筆者之前雖然在ASP.NET和Native PHP也常使用Ajax來做一些使用者資訊顯示,但在Laravel中使用時發現有一些小地方需要注意,因此特別記錄下來分享給各位,那麼就由一個簡單的範例 – 學生分組資訊開始吧!
PS.此範例僅於View和Controller間做溝通,並不涉及Model。
Route
建立好Laravel專案後,首先先對route進行設定。這邊我們設定兩個route,分別是studentInfo這個view的GET(負責顯示view)和POST(負責回應Ajax post request),並對應HomeController的不同function。
routes/web.php
Route::get('studentInfo', 'HomeController@studentInfo');
Route::post('studentInfo', 'HomeController@studentInfoPost');
Controller
同樣的,為了對應route的設定,建立HomeController.php並增加兩個function分別用來顯示view和回應Ajax post request。
app/Http/Controllers/HomeController.php
注意,若之後讀者們寫Laravel Ajax有出現此錯誤訊息:
LOG.error: The Response content must be a string or object implementing __toString(), "boolean" given.
可嘗試將 return $result
改成 return response()->json($result)
View
最後我們建立studentInfo.blade.php,並以jQuery Ajax來做資料傳遞。
resources/views/studentInfo.blade.php
這邊請注意幾個地方:
Laravel強制要求要防範CSRF( Cross-site request forgery)攻擊,所以須加上
否則會出現這個錯誤訊息:
如果覺得這樣寫太麻煩,也可在ajax傳json data的地方加入:
或是在<form>下面加入@csrf,更多資訊請參考Laravel官方文件。
成果測試
開啟studentInfo可看到如下頁面:
輸入資訊並Submit:
即可看到下方顯示成功返回的data!那麼今天的分享就到這裡,See you!