【问题标题】:datatables do not want to extract data from the API数据表不想从 API 中提取数据
【发布时间】:2020-03-14 12:41:05
【问题描述】:

这是我第一次尝试数据表。我想显示来自 API 的数据,这个方法是 get 但数据不想出现,只出来 "loading"

我的脚本


 $(document).ready(function(){  
      $('#data-table').DataTable({  
           "ajax"     : "127.0.0.1:8080/api/v2/client/vendor",  
           "type"     : "GET",
           "columns"     :     [  
                {     "data"     :     "id"     },  
                {     "data"     :     "name"},  
                {     "data"     :     "class"}  
           ]  
      });  
 });  

我的响应 API


{
    "status": "success",
    "data": [
        {
            "id": 2,
            "name": misry,
            "class": 115

        },
        {
           "id": 2,
            "name": ahmad,
            "class": 76
        },

【问题讨论】:

  • 试试这个link从路由中删除csrf令牌
  • 您现在遇到什么类型的错误? @Vandy

标签: javascript database laravel api datatables


【解决方案1】:

您可以导入 Datatables 外观。

 use Datatables;

创建一个方法来显示我们的视图和一个方法来处理我们的数据表 ajax 请求和控制器看起来像这样

namespace App\Http\Controllers;

use App\Http\Requests;
use App\User;
use Yajra\Datatables\Datatables;

class DatatablesController extends Controller
{
    /**
     * Displays datatables front end view
     *
     * @return \Illuminate\View\View
     */
    public function getIndex()
    {
        return view('datatables.index');
    }

    /**
     * Process datatables ajax request.
     *
     * @return \Illuminate\Http\JsonResponse
     */
    public function anyData()
    {
        return Datatables::of(User::query())->make(true);
    }
}

让我们创建我们的视图和脚本 Ajex 调用

@push('scripts')
    <script>
    $(function() {
        $('#data-table').DataTable({
            processing: true,
            serverSide: true,
            ajax: '{!! route('datatables.data') !!}',
            columns: [
                { data: 'id', name: 'id' },
                { data: 'name', name: 'name' },
                { data: 'class', name: 'class' }
            ]
        });
    });



         </script>
     @endpush

在 app\Htpp\routes.php 中注册数据表路由

Route::controller('datatables', 'DatatablesController', [
    'anyData'  => 'datatables.data',
    'getIndex' => 'datatables',
]);

【讨论】:

    【解决方案2】:

    试试..请添加 csrf 令牌

     $(document).ready(function(){  
          var table = $('#data-table').DataTable({  
               "processing": true,
               "serverSide": true,
               "ajax"     : "127.0.0.1:8080/api/v2/client/vendor",  
               "type"     : "post",
               "data": function ( d ) {
                        d._token = "{{ csrf_token() }}";
    
                    },
               "columns"     :     [  
                    {"data":"id"},  
                    {"data":"name"},  
                    {"data":"class"}  
               ]  
          });  
     });
    

    【讨论】:

    • 我不使用token,因为方法get
    • 你必须在数据表中使用POST方法
    猜你喜欢
    • 2011-10-19
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-06-13
    • 1970-01-01
    • 2013-06-14
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多