Laravel 8 中 ajax 的 405 (Method Not Allowed) 错误
Posted
技术标签:
【中文标题】Laravel 8 中 ajax 的 405 (Method Not Allowed) 错误【英文标题】:405 (Method Not Allowed) error on ajax in Laravel 8 【发布时间】:2021-12-12 14:19:18 【问题描述】:我试图在我的 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
【问题讨论】:
【参考方案1】:请将选项 type
更改为 method
$.ajax(
method: 'POST',
url : '/getReasonForVisit',
data : 'catId' : catId ,
dataType: 'json',
success:function(data)
console.log(data);
);
【讨论】:
我已经清除了我的路由缓存,现在错误已更改CSRF token mismatch
。我将类型更改为方法,仍然是同样的错误
你在 中标记了这个元数据吗?
你是对的。我在视图中缺少此标签。现在问题解决了【参考方案2】:
我解决了我的问题。实际上,我的刀片中缺少 csrf 元标记。所以现在我在 <head>
标记的视图刀片文件中添加了这段代码。
<head>
<meta name="csrf-token" content=" csrf_token() ">
</head>
【讨论】:
以上是关于Laravel 8 中 ajax 的 405 (Method Not Allowed) 错误的主要内容,如果未能解决你的问题,请参考以下文章
Laravel 5.1 AJAX - 即使我发送 POST 请求,也不允许返回 405 GET 方法
405 方法不允许,PATCH 不工作。 Laravel、Ajax、Jquery、引导模式
当我使用 ajax 发布请求时,为啥在我的 live laravel 项目中显示 404 和 405
Laravel:使用 jquery ajax api 发布数据来存储数据时获取 405 Method Not Allowed