405 (Method Not Allowed)错误的ajax在Laravel 8



我试图在我的Laravel 8项目中调用ajax函数。但每次调用都得到错误POST http://127.0.0.1:8000/getReasonForVisit 405 (Method Not Allowed)。我尝试了很多选择,如changing post method to get, change url等,但没有用。如果有人能帮助我就太好了。

这是我的代码。

JS文件

function getReasonForVisit(catId) {

$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
});
$.ajax({
type: 'POST',
url : '/getReasonForVisit',
data : {'catId' : catId },
dataType: 'json',
success:function(data) {
console.log(data);
}
});
}
$('#treatment-category').on('change', function (){
var catId = $(this).val();
getReasonForVisit(catId);
});
<<p>视图/strong>
<select class="form-control form-select" name="category" id="treatment-category">

<?php $categories = App::make("AppHttpControllersAppointmentsController")->getTreatmentCategories(); ?>
@foreach($categories as $cat)  
<option value="{{ $cat->id }}">{{ $cat->category_name }}</option>
@endforeach
</select>

Route::post('/getReasonForVisit', [AppHttpControllersAppointmentsController::class, 'getReasonForVisit'])->name('getReasonForVisit');

控制器

class AppointmentsController extends Controller
{
public function getTreatmentCategories() {
$categories = DB::table('treatment_category')->get();
return $categories;
}
public function getReasonForVisit() {
echo 111;
}
}

编辑

我清除了我的路由缓存。现在显示错误CSRF token mismatch

请将选项type更改为method

$.ajax({
method: 'POST',
url : '/getReasonForVisit',
data : {'catId' : catId },
dataType: 'json',
success:function(data) {
console.log(data);
}
});

问题解决了。实际上,我缺少csrf元标签在我的刀片。所以现在我在<head>标签的视图刀片文件中添加了这段代码。

<head>
<meta name="csrf-token" content="{{ csrf_token() }}">
</head>

最新更新