Laravel 8 中 ajax 上的 405(方法不允许)错误
405 (Method Not Allowed) error on ajax in 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);
});
查看
<select class="form-control form-select" name="category" id="treatment-category">
<?php $categories = App::make("App\Http\Controllers\AppointmentsController")->getTreatmentCategories(); ?>
@foreach($categories as $cat)
<option value="{{ $cat->id }}">{{ $cat->category_name }}</option>
@endforeach
</select>
路线
Route::post('/getReasonForVisit', [App\Http\Controllers\AppointmentsController::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);
}
});
我解决了我的问题。实际上,我的 blade 中缺少 csrf 元标记。所以现在我在视图 blade 文件的 <head>
标签中添加了这段代码。
<head>
<meta name="csrf-token" content="{{ csrf_token() }}">
</head>
我正在尝试在我的 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);
});
查看
<select class="form-control form-select" name="category" id="treatment-category">
<?php $categories = App::make("App\Http\Controllers\AppointmentsController")->getTreatmentCategories(); ?>
@foreach($categories as $cat)
<option value="{{ $cat->id }}">{{ $cat->category_name }}</option>
@endforeach
</select>
路线
Route::post('/getReasonForVisit', [App\Http\Controllers\AppointmentsController::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);
}
});
我解决了我的问题。实际上,我的 blade 中缺少 csrf 元标记。所以现在我在视图 blade 文件的 <head>
标签中添加了这段代码。
<head>
<meta name="csrf-token" content="{{ csrf_token() }}">
</head>