Skip to content
Advertisement

how can I send post request in ajax to laravel route parameters

I want to toggle publish stat of my exams in laravel, I created a route for toggling and it worked, but I don’t want to refresh the page every time I send a POST request so I created this function to send,

function togglePublish(id){
    let token = {{ csrf_token() }};
    $.ajax({
        type: "post",
        url: `{{ route('togglePublish','${id}') }}`,
        data: `_token=${token}`
    });
}

I meant by this after the laravel compile the page, the URL will be https://localhost/toggle/${id} then javascript change the id variable to 1 for example, so the link be https://localhost/toggle/1 and that will work, but laravel returned

Missing required parameter for [Route: togglePublish] [URI: a/togglePublish/{exam}] [Missing parameter: id].

I think I have to add @csrf

the route

Route::post('/a/togglePublish/{exam:id}', [AdminExamController::class, 'togglePublish'])->name('togglePublish');

the togglePublish function in AdminExamController controller

public function togglePublish(Exam $exam)
{
    dd($exam);
}

Advertisement

Answer

in plus of what @vivekVaghela said, I’ve changed my ajax to

function togglePublish(id){
        let token = '@csrf';
        token = token.substr(42, 40);
        $.ajax({
            type: "post",
            url: `{{ url('/a/togglePublish/'.'${id}') }}`,
            data: `_token=${token}`,
            error: function(err) {
                console.log( $($(err.responseText)[1]).text() )
                debugger;
            }
        });
    }

EDIT: to use ajax you have to use the uncompressed script tag, as below

  1. JQuery Official website: Click me

  2. Select the version that you need (The latest stable version is recommended) and click on the uncompressed button enter image description here enter image description here Copy the script on the dialog box and past it on your code: enter image description here enter image description here


res
TypeError: $.ajax(…) is not a function?

User contributions licensed under: CC BY-SA
1 People found this is helpful
Advertisement