2017-10-20 99 views
2

當試圖發出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'); 

它顯示「嗨」的時候,就像按下按鈕

+0

服務器端腳本錯誤。嘗試啓用服務器上的錯誤反饋。 – Mouser

+1

檢查錯誤的'storage/logs/laravel.log'。 –

+0

它說,local.ERROR:非靜態方法Illuminate \ Http \ Request :: ajax()不應被靜態調用{「userId」:1,「email」:「[email protected]」,「exception」: 「[object](ErrorException(code:0):非靜態方法Illuminate \\ Http \\ Request :: ajax()不應該在上靜態調用 –

回答

3

在評論,您發佈的錯誤信息。爲了解決這個問題,改變這種:

if(Request::ajax()){ 

這樣:

if (request()->ajax()) { 

對於第二個錯誤:

response()->json(request()->all()); 

此外,您還可以注入Request類:

public function postLike(Request $request) 

並使用$request而不是request()

+0

@ShahlinIbrahim它意味着它可以工作。錯誤和這一個是完全不同的錯誤 –

+0

其實,是的,它的工作原理,我不得不取代其他請求的用途以及謝謝! –

+0

很高興幫助 –

相關問題