laravel8 datatables ajax分页 前端渲染

1.引入datatables css js cdn 链接

   <!--第一步:引入Javascript / CSS (CDN)-->
    <!-- DataTables CSS -->
    <link rel="stylesheet" type="text/css" href="http://cdn.datatables.net/1.10.21/css/jquery.dataTables.css">
 
    <!-- jQuery -->
    <script type="text/javascript" charset="utf8" src="http://code.jquery.com/jquery-1.10.2.min.js"></script>
 
    <!-- DataTables -->
    <script type="text/javascript" charset="utf8" src="http://cdn.datatables.net/1.10.21/js/jquery.dataTables.js"></script>

2.提前布局要展示的页面 注意数据库查出的数据无需写html标签

<!--第二步:添加如下 HTML 代码-->
<table id="table_id_example" class="display">
    <thead>
    <tr>
        <th>ID</th>
        <th>医生姓名</th>
        <th>医生照片</th>
        <td>院区</td>
        <td>职称</td>
        <td>科室</td>
        <td>简介</td>
        <td>操作</td>
    </tr>
    </thead>
    <tbody>

    </tbody>
</table>

3.初始化datatables

<!--第三步:初始化Datatables-->
$(document).ready( function () {
    $('#table_id_example').DataTable({
        // 开启分页
        paging:true,
        order:[[0,'desc']],//默认排序,第一列倒序,order:[[0,'desc'],[1,'asc']]
        // scrollY:500,
        //每页显示条数
        lengthMenu:[3,5,7,10],
        //开启服务器模式
        serverSide: true,
 //但对序号为0列的列不进行排序,别的列均可进行排序
//后面是数组,可以是多列

"aoColumnDefs" : [ {  "bSortable" :  false ,  "aTargets" : [  1 , 2,3,4 ] }]  

        //后端请求
        ajax:{
            url:'{{route('admin.doctor.datatables')}}',
            type:'get'
        },
        //需要展示页面的数据
        columns:[
            {data:'id'},
            {data:'doctor_name'},
            {data:'doctor_img'},
            {data:'campus_id'},
            {data:'departmenthome_id'},
            {data:'doctor_position_id'},
            {data:'introduce'}, 
            {data:'btn'}

        ],
        language: {
       "sProcessing": "处理中...",
       "sLengthMenu": "显示 _MENU_ 项结果",
       "sZeroRecords": "没有匹配结果",
       "sInfo": "显示第 _START_ 至 _END_ 项结果,共 _TOTAL_ 项",
       "sInfoEmpty": "显示第 0 至 0 项结果,共 0 项",
       "sInfoFiltered": "(由 _MAX_ 项结果过滤)",
       "sInfoPostFix": "",
       "sSearch": "搜索:",
       "sUrl": "",
       "sEmptyTable": "表中数据为空",
       "sLoadingRecords": "载入中...",
       "sInfoThousands": ",",
       "oPaginate": {
           "sFirst": "首页",
           "sPrevious": "上页",
           "sNext": "下页",
           "sLast": "末页"
       },
       "oAria": {
           "sSortAscending": ": 以升序排列此列",
           "sSortDescending": ": 以降序排列此列"
       }
   }

       

    });
});

4.后端代码 实现渲染分页

//datatables 渲染页面
public function datatables(Request $request)
{
    //查询数据库数据
    $data = DoctorModel::all();
        //排序
    $id = $request->get('columns')[0]['data'];//第几列,字段名
     $order = $request->get('order')[0]['dir'];//升序降序

    //记录总条数
    $total = $data->count();
    //分页开始的位置
    $start = $request->get('start');
    //分页结束的位置
    $length = $request->get('length');
    //接收要搜索的数据
    $search = $request->get('search',[]);
    //分页
    $data = DoctorModel::orderBy($id,$order)->offset($start)->limit($length)->get();
    //datatables 返回参数必选 一下四个
    $result = [
        'draw'=>$request->get('draw'),
        'recordsTotal'=>$total,
        'recordsFiltered'=>$total,
        'data'=>$data
    ];
    return $result;

}

5.访问题

 

 protected $appends = ['btn'];  
public function getBtnAttribute()
      {
          $id =$this->id;

          return "<a title='删除' href='javascript:;'onclick='admin_del($id,this)' class='ml-5' style='text-decoration:none'><i class='Hui-iconfont'>&#xe6e2;</i></a>";

      }

原文转载自:laraval8 datatables 渲染页面 分页 - 代码先锋网 (codeleading.com)

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 你可以通过以下两种方式来设置DataTables大量分页: 1. 通过设置每页显示的记录条数来减少分页数。可以通过设置每页显示的记录条数,比如每页显示50条记录,来减少分页数。这样可以减少服务器端的负载,并提高页面加载速度。 2. 通过使用服务器端分页来实现。服务器端分页是将数据库中的所有记录一次性获取并存储在服务器内存中,然后根据需要分页显示记录。这样可以避免前端页面与服务器端的多次通信,降低服务器端的负载,提高页面加载速度。 请注意,以上两种方式需要根据实际的业务需求和数据量进行选择。如果数据量很大或者涉及到多表关联查询,那么使用服务器端分页会更加合适。如果数据量比较小,且分页查询比较频繁,那么就可以考虑使用前端分页。 ### 回答2: DataTables是一个常用的数据表格插件,用于在网页上展示和处理大量数据。要设置DataTables的大量分页,可以按照以下步骤进行: 1. 导入DataTables插件:在网页中引入DataTables的相关文件,包括CSS和JavaScript文件。 2. 创建一个HTML表格:在网页中创建一个HTML表格,用于展示数据。 3. 初始化DataTables:使用JavaScript代码初始化DataTables插件,并关联到HTML表格上。可以指定一些参数来配置DataTables的行为,比如分页大小、排序方式等。 4. 加载数据:根据需要,可以使用Ajax或其他方式加载大量的数据,并填充到HTML表格中。 5. 分页设置:根据需要,可以设置DataTables分页大小和显示页码的数量。分页大小定义了每页显示的数据条数,而显示页码的数量决定了页面下方的页码导航栏上可见的页码数量。 6. 自定义分页样式:可以自定义CSS样式来美化分页导航栏,使其更符合网页的设计风格。 7. 配置分页回调函数:DataTables提供了一些回调函数,可以在分页事件发生时执行自定义的处理逻辑。例如,可以在翻页时重新加载新的数据。 通过以上步骤,我们可以设置DataTables插件以处理大量数据的分页展示需求。根据具体的情况,可以根据DataTables提供的参数和回调函数进行更高级的设置和定制。 ### 回答3: DataTables是一个用于处理大量数据的JavaScript插件,它提供了丰富的功能和选项来进行数据分页。下面是一些设置DataTables进行大量分页的方法: 1. 分页器设置:使用`paging`选项来设置分页器的样式和显示。可以设置每页显示的记录数量,以及是否显示分页器。例如,通过将`paging: true`设置为`paging: false`,可以禁用分页器。 2. 分页模式设置:使用`pagingType`选项来设置分页模式。DataTables提供了多种分页模式,如简单数字导航、多页块以及滚动分页等。选择合适的分页模式可以提升用户体验。 3. AJAX分页:对于大量数据,可以使用Ajax加载数据,并通过`serverSide`选项将分页交由服务器处理。这样可以避免一次性加载大量数据,提高分页的性能和响应速度。 4. 自定义分页按钮:使用`pagingNumbers`选项可以自定义分页按钮的显示。你可以通过修改分页按钮模板来更改其样式或添加自定义的元素。 5. 页码跳转:可以使用`pagingType`选项的`input`值来在分页器中添加页码跳转输入框。用户可以在输入框中输入页码,然后按下回车键或单击跳转按钮来跳转到指定页。 6. 分页事件:DataTables提供了多个分页相关的事件,如`page`和`length`事件。你可以通过监听这些事件来执行自定义操作,如加载其他数据、更新页面元素等。 总的来说,要设置DataTables进行大量分页,需要根据具体的需求和情况来选择适当的配置选项,并可以利用其提供的丰富功能和事件来进行自定义操作。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值