我試圖在我的 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
uj5u.com熱心網友回復:
請將選項更改type為method
$.ajax({
method: 'POST',
url : '/getReasonForVisit',
data : {'catId' : catId },
dataType: 'json',
success:function(data) {
console.log(data);
}
});
uj5u.com熱心網友回復:
我解決了我的問題。實際上,我的刀片中缺少 csrf 元標記。所以現在我在<head>標簽中的視圖刀片檔案中添加了這段代碼。
<head>
<meta name="csrf-token" content="{{ csrf_token() }}">
</head>
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/338689.html
標籤:阿贾克斯 拉拉维尔 laravel-8 http-status-code-405
上一篇:意外的識別符號“getProject”。預期的';'異步變數宣告后
下一篇:動態更新網頁上的Div(燒瓶)
