當試圖發出AJAX POST請求時,我的代碼給我500內部服務器錯誤。我已經完成了CSRF令牌部分。AJAX POST請求不調用後路由中的控制器方法
這是我的JS代碼
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
});
$('#likeBtn').on('click', function(e){
e.preventDefault();
//Getting urlLink and activityId - works
$.ajax({
type: 'POST',
url: './mainView/postlike',
data: {activityId : activityId},
success: function(data){
console.log(JSON.stringify(data));
},
error: function(e){
console.log(JSON.stringify("Exception: " + e));
}
});
});
這是我的帖子路線:
Route::post('/mainView/postlike', '[email protected]')->name('postLike')->middleware('auth');
這是我的控制器方法:
public function postLike(){
if(Request::ajax()){
return Response::json(Request::all());
}
}
這是我mainView.blade.php 。我真的不想用表格,但我仍然嘗試過。
<form id="likeForm" method="POST" action="#">
<input class="likeToken" type="hidden" name="_token" value="{{ csrf_token() }}">
<a id="likeBtn" data="{{ route('activity.like', ['activityId' => $activity->activity_id]) }}">
<img src="IMG/icons/like.png" alt="likes">
</a>{{ $activity->likes->count() }}
</form>
這就是說,如果我在我的路線中這樣做,它會輸出提供的信息。
Route::post('/mainView/postlike', function(){
if(Request::ajax()){
echo "Hi";
}
})->name('postLike')->middleware('auth');
它顯示「嗨」的時候,就像按下按鈕
服務器端腳本錯誤。嘗試啓用服務器上的錯誤反饋。 – Mouser
檢查錯誤的'storage/logs/laravel.log'。 –
它說,local.ERROR:非靜態方法Illuminate \ Http \ Request :: ajax()不應被靜態調用{「userId」:1,「email」:「[email protected]」,「exception」: 「[object](ErrorException(code:0):非靜態方法Illuminate \\ Http \\ Request :: ajax()不應該在上靜態調用 –