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

Time:02-04

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 = token.substr(42, 40);
    $.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);
}

CodePudding user response:

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: 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?

  •  Tags:  
  • Related