Datatables не будет работать с типом ajax POST и GET - PullRequest
0 голосов
/ 25 января 2019

Сначала я использовал метод GET, и я получил бы эту ошибку: 414 (Request-URI Too Long) Мой Аякс такой:

var table = $('#datatable').DataTable( {
  stateSave: true,
  scrollX: true,
  serverSide: true,
  ajax: {
    url: '/lista-evidencija-radnika-po-danu/tabela/'+ id + '/' + tip,
    type: 'GET',
    data: function ( d ) {
      d.zakljucano = $('#zakljucano').val();
    },
  },...

И мой маршрут:

Route::get('/lista-evidencija-radnika-po-danu/tabela/{id}/{tip}', 'EvidencijaRadnikaPoDanuController@tabela_evidencije');

Но тогда я получаю ошибку: 414 (слишком длинный URI-запрос)

Если я переключусь на тип POST и переключу свой маршрут на публикацию, я получу эту ошибку: 405 (Метод не разрешен)

var table = $('#datatable').DataTable( {
  stateSave: true,
  scrollX: true,
  serverSide: true,
  ajax: {
    url: '/lista-evidencija-radnika-po-danu/tabela/'+ id + '/' + tip,
    type: 'POST',
    data: function ( d ) {
      d.zakljucano = $('#zakljucano').val();
    },
  },...

И мой POST маршрут:

Route::post('/lista-evidencija-radnika-po-danu/tabela/{id}/{tip}', 'EvidencijaRadnikaPoDanuController@tabela_evidencije');

Мой контроллер

public function tabela_evidencije(Request $request, $id, $tip)
{
    $evidencija = EvidencijaRadnikaPoDanu::with('radnik', 'radnik.identifikacija')
        ->select('evidencija_radnika_po_danus.*', 'radniks.id_identifikacije')
        ->where('evidencija_radnika_po_danus.id_kompanije', Auth::user()->id_kompanije)
        ->where('evidencija_radnika_po_danus.id_radnih_dana', $id)
        ->where('evidencija_radnika_po_danus.tip', $tip);
    return datatables()->of($evidencija)
        ->editColumn('id_radnika', function ($data) {
            $puno_ime = $data->radnik->prezime.' '.$data->radnik->ime;
            return $puno_ime;
        })
        ->editColumn('id_ime', function ($data)  {
            return $data->radnik->ime;
        })
        //pomocu veze izmedju radnika i evidencija pronalazimo identifikacioni broj
        ->editColumn('id', function ($data)  {
            return $data->radnik->identifikacija->broj;
        })
        ->editColumn('id_radnika_modal', function ($data)  {
            return $data->id_radnika;
        })
        ->editColumn('id_modal', function ($data)  {
            return $data->id;
        })
    ->make(true);
}

После проверки во время использования GET мой URL превышает 8 000 символов!

1 Ответ

0 голосов
/ 28 января 2019

Я добавил в свой <head> this:

<meta name="csrf-token" content="{{ csrf_token() }}">

и добавил токен в моем методе ajax POST

ajax: {
   url: '/lista-evidencija-radnika-po-danu/tabela/'+ id + '/' + tip,
   method: 'POST',
   'headers': {
       'X-CSRF-TOKEN': '{{ csrf_token() }}'
   }...

А также изменил свой маршрут на post

Route::post('/lista-evidencija-radnika-po-danu/tabela/{id}/{tip}', 'EvidencijaRadnikaPoDanuController@tabela_evidencije');

И мне нужно было запустить эту команду в моей консоли

php artisan optimize

Чтобы мой маршрут изменился на POST-маршрут ...

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...