Я не могу заставить свою DataTable загружать данные по маршруту в Api.php типа POST.
Я использую эти таблицы данных: https://datatables.net/
API.php
Route::post('subredes/{username}/{token}', function($username, $token){
$user = DB::table('usuarios')
->where('token', $token)
->value('username');
$estado = DB::table('usuarios')
->where('username', $username)
->value('estado');
if (!empty(trim($user)) && $estado == 2){
$query = DB::table('subredes as s')
->select('s.id', 's.ip', 's.gateway', 's.mask');
return datatables()
->of($query)
->addColumn('btn','Actions.subredes')
->rawColumns(['btn'])
->toJson();
}
});
Javascript
$(document).ready(function(){
$('#Subredes').DataTable({
"bAutoWidth": false,
"language":{
"url": "{{url('api/spanish')}}"
},
"destroy": true,
"responsive": true,
"serverSide":true,
"ajax": {
"url": "{{url('api/subredes/'.auth()->user()->username.'/'.auth()->user()->token)}}",
"type": "POST",
},
"columnDefs": [{
"targets": 'no-sort',
"orderable": false,
"searchable": false,
}],
"columns":[
{data: 'ip', name: 's.ip'},
{data: 'gateway', name: 's.gateway'},
{data: 'mask', name: 's.mask'},
{data: 'btn'},
]
});
});
Ошибка:
Я подозреваю, что это потому, что он не дал ему CSRF, но я не знаю, как это сделать, и я не уверен на 100%, что проблема именно в этом.





Проблема в том, что DataTables делает запрос GET, а вы разрешаете только POST. Ошибка в конфигурации ajax: вам нужно заменить type на method, и он отправит его как POST.
Источник: https://api.jquery.com/jQuery.ajax/
Токен CSRF станет вашей следующей проблемой. Самый простой способ — использовать GET вместо post (в конфигурации DataTables и конфигурации Route). В противном случае вам придется выставить токен где-нибудь в вашем HTML (например, в метатеге) и отправить его с запросом:
let token = document.head.querySelector('meta[name = "csrf-token"]');
//...
"ajax": {
"url": "{{url('api/subredes/'.auth()->user()->username.'/'.auth()->user()->token)}}",
"method": "POST",
"data": {
_token: token,
},
Думаю, это было во время присвоения значения переменной token use $('meta [name = csrf_token]'). attr ("content"), и он работает правильно, не возникнет ли проблем при таком способе?
Прямо сейчас я получаю проблему в jquery, которая говорит: Uncaught TypeError: Illegal invocation