简体   繁体   中英

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);
}

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 在此处输入图像描述 Copy the script on the dialog box and past it on your code: enter image description here在此处输入图像描述


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

The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM