Я использую Laravel 7.2.0, пытаюсь отправить запрос ajax, но у меня есть проблема.
Я пытаюсь передать токен csrf из мета, но он дает мне Ошибка 419.
Это работает, только если я добавлю @csrf
в форму, как показано ниже, но контроллер не получит запрос ajax.
Форма:
<form id="formto" method="POST" action="{{ route('selectedtodolist') }}">
@csrf
<p>{{$Todo->name}}</p>
<br>
<input id="id_todolist" name="id_todolist" value="{{$Todo->id}}" type="hidden">
<input type="submit">
</form>
Глава:
@push('head')
<!-- Scripts ajax -->
<script src=" {{ asset('js/components/Selectedtodolist.js') }} "></script>
<!-- JQuery -->
<script src="https://code.jquery.com/jquery-3.4.1.min.js"></script>
<meta name="csrf-token" content="{{ csrf_token() }}" />
@endpush
Jquery ajax:
$.ajaxSetup({
headers: {
'X-CSRF-TOKEN': $('meta[name="csrf-token"]').attr('content')
}
});
$(() => {
$("#formto").submit((e) => {
let that = e.currentTarget;
e.preventDefault();
$.ajax({
type: $(this).attr('method'),
url: $(this).attr('action'),
data: $(this).serialize(),
dataType: 'json',
cache: false,
success: function() {
alert("work");
}
})
.done((data) => {
console.log(data);
})
И контроллер: (дайте мне 404 причину ошибки этого «если»):
public function __invoke(Request $request)
{
if ($request->ajax()) {
$this->validate($request, [
'id_todolist' => 'bail|required|email'
]);
return response()->json ();
}
abort(404);
}
маршрут: Route::post('selectedtodolist', 'SelectedlistController')->name('selectedtodolist');
Заранее спасибо