【问题标题】:Datatables won't work with ajax POST type and GET type数据表不适用于 ajax POST 类型和 GET 类型
【发布时间】:2019-06-19 06:54:45
【问题描述】:

我首先使用了 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 (Request-URI Too Long)

如果我切换到 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 个字符!

【问题讨论】:

  • 您能否向我们展示您的控制器,并根据您的 GET 请求添加 id 和小费。尝试将参数添加到 GET Route Route::get('/lista-trajanja-odsustva/tabela/{id}/{tip}', 'TrajanjeOdsustvaController@tabela'); laravel.com/docs/5.7/routing#route-parameters
  • 我复制了错误的路线,抱歉,我编辑了我的问题。
  • 有没有以lista-evidencija-radnika-po-danu为前缀的路由
  • 不,但是当我将我的 ajax 方法更改为发布并将路由更改为发布时,我必须运行 php artisan optimize 才能接受我的更改...

标签: ajax laravel datatables routes


【解决方案1】:

我在我的<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 路由...

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-01-05
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多