簡體   English   中英

AJAX POST請求未在發布路由中調用Controller方法

[英]AJAX POST Request not calling Controller method in post route

嘗試發出AJAX POST請求時,我的代碼給了我500個內部服務器錯誤。 我已經完成了CSRF令牌部分。

這是我的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', 'ActivityController@postLike')->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');

按下“贊”按鈕時顯示“嗨”

在評論中,您已發布錯誤消息。 要修復它,請更改此:

if(Request::ajax()){

對此:

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

對於第二個錯誤:

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

另外,您可以注入Request類:

public function postLike(Request $request)

並使用$request代替request()

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM