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
JQuery Official website: Click me
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