数据表不适用于ajax POST类型和GET类型

时间:2019-01-25 12:22:31

标签: ajax laravel datatables routes

我首先使用GET方法,但会出现此错误: 414 (Request-URI Too Long) 我的ajax是这样的:

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超过8000个字符!

1 个答案:

答案 0 :(得分:0)

我在<head>中添加了以下内容:

<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() }}'
   }...

也将我的路线更改为发布

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

我不得不在控制台中运行此命令

php artisan optimize

为了将我的路线更改为POST路线...