`
ghl116
  • 浏览: 163886 次
  • 性别: Icon_minigender_1
  • 来自: 上海
社区版块
存档分类
最新评论

jquery datatable 的分页参数太坑爹了

 
阅读更多

 jquery datatable 传递的分页参数是非json格式,然后我后台用的spring MVC后台接收的分页参数一般是一个分页对象。调了半天都不行,后来在以下网址找到解决方案

 

 

http://www.cnblogs.com/seayxu/p/5513907.html

[jQuery]jQuery DataTables插件自定义Ajax分页实现

 

JQuery DataTables插件自定义Ajax分页实现

前言

昨天在博客园的博问上帮一位园友解决了一个问题,我觉得有必要记录一下,万一有人也遇上了呢。

问题描述

园友是做前端的,产品经理要求他使用jQuery DataTables插件显示一个列表,要实现分类效果。

后端的分页接口已经写好了,不涉及条件查询,需要传入页码(pageNo)和页面显示数据条数(pageSize),显示相应页的显示记录,且不能修改后端接口。

分析

先来分析下分页实现。
一是后端分页:这种情况下,在后端很容易实现,在官网上有示例,不多说明。
二是前端分页:前端分页也是支持的,不过需要一次把所有数据都获取到才可以。

看到这里,问题来了。由于后端在目前的情况下是更改不了,只能在前端实现。但是,现在又不满足前端分页的条件:一次性获取所有数据(现在后端数据接口只能返回相应页码的数据)。

介于目前的情况,获取的数据只有一页,没有所有的页码。
试试能不能伪装一下后端分页的情况,就是开启后端分页,在请求之前,将传入的数据进行重组,在获取到数据后,将返回的数据按照后端分页的数据格式组装一遍。

经过测试,是可以的。

实现

通过DataTables配置参数ajax项实现的。关于ajax详细介绍请看官方说明:中文 | 英文

ajax接收三种类型的参数:

  • string: 设置获取数据的url
  • object:和 jQuery.ajax 定义类似
  • function:自定义获取数据的功能

直接上代码吧,都有注释。
前端页面代码:

<html xmlns="http://www.w3.org/1999/xhtml">
<head>
    <title>jquery DataTables插件自定义分页ajax实现</title>
    <link href="http://cdn.bootcss.com/bootstrap/3.3.6/css/bootstrap.min.css" rel="stylesheet" media="screen">
    <link href="http://cdn.bootcss.com/datatables/1.10.11/css/dataTables.bootstrap.min.css" rel="stylesheet" media="screen">
    <link href="http://cdn.bootcss.com/datatables/1.10.11/css/jquery.dataTables.min.css" rel="stylesheet" media="screen">
</head>
<body>
<div class="row-fluid">
    <h3>JQuery DataTables插件自定义分页Ajax实现</h3>
    <table id="example" class="display table-striped table-bordered table-hover table-condensed" cellspacing="0" width="100%">
        <thead>
        <tr>
            <th>编号</th>
            <th>姓名</th>
            <th>性别</th>
        </tr>
        </thead>
    </table>
</div>
<script src="http://cdn.bootcss.com/datatables/1.10.11/js/jquery.js"></script>
<script src="http://cdn.bootcss.com/bootstrap/3.3.6/js/bootstrap.min.js"></script>
<script src="http://cdn.bootcss.com/datatables/1.10.11/js/jquery.dataTables.min.js"></script>
<script src="http://cdn.bootcss.com/datatables/1.10.11/js/dataTables.bootstrap.min.js"></script>
<script type="text/javascript">$(function () {//提示信息var lang ={"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":"末页","sJump":"跳转"},"oAria":{"sSortAscending":": 以升序排列此列","sSortDescending":": 以降序排列此列"}};//初始化表格var table =$("#example").dataTable({language:lang,//提示信息autoWidth:false,//禁用自动调整列宽stripeClasses: ["odd","even"],//为奇偶行加上样式,兼容不支持CSS伪类的场合processing:true,//隐藏加载提示,自行处理serverSide:true,//启用服务器端分页searching:false,//禁用原生搜索orderMulti:false,//启用多列排序order: [],//取消默认排序查询,否则复选框一列会出现小箭头renderer:"bootstrap",//渲染样式:Bootstrap和jquery-uipagingType:"simple_numbers",//分页样式:simple,simple_numbers,full,full_numberscolumnDefs: [{"targets":'nosort',//列的样式名"orderable":false//包含上样式名‘nosort’的禁止排序}],ajax:function (data, callback, settings) {//封装请求参数var param ={};param.limit=data.length;//页面显示记录条数,在页面显示每页显示多少项的时候param.start=data.start;//开始的记录序号param.page= (data.start / data.length)+1;//当前页码//console.log(param);//ajax请求数据$.ajax({type:"GET",url:"/hello/list",cache:false,//禁用缓存data: param,//传入组装的参数dataType:"json",success:function (result) {//console.log(result);//setTimeout仅为测试延迟效果setTimeout(function () {//封装返回数据var returnData ={};returnData.draw=data.draw;//这里直接自行返回了draw计数器,应该由后台返回returnData.recordsTotal=result.total;//返回数据全部记录returnData.recordsFiltered=result.total;//后台不实现过滤功能,每次查询均视作全部结果returnData.data=result.data;//返回的数据列表//console.log(returnData);//调用DataTables提供的callback方法,代表数据已封装完成并传回DataTables进行渲染//此时的数据需确保正确无误,异常判断应在执行此回调前自行处理完毕callback(returnData);},200);}});},//列表表头字段columns: [
                {"data":"Id"},{"data":"Name"},{"data":"Sex"}
            ]
        }).api();//此处需调用api()方法,否则返回的是JQuery对象而不是DataTables的API对象});</script>
</body>
</html>

JSON数据格式:
JSON数据格式

效果图:
效果图

本文就介绍到这里。
期待你的点评。

jQuery DataTables插件自定义Ajax分页实现

 

分享到:
评论

相关推荐

    Jquery dataTable完整例子(取数据、分页、样式等)

    标题“Jquery dataTable完整例子(取数据、分页、样式等)”和描述表明,我们将讨论如何利用这个插件实现数据的获取、分页、排序和搜索功能,并且将看到一个具体的实例,帮助理解如何与JSON数据进行交互。...

    Jquery dataTable中文API中文文档

    ### JQuery DataTable API中文文档知识点概览 #### 一、简介 JQuery DataTable 是一个高度灵活且功能丰富的插件,能够将HTML表格转换成具有高级交互性的动态表格。它支持复杂的数据排序、搜索、分页等功能,并能很...

    Jquery dataTable完整例子(分页,带文档)

    jQuery 的插件 dataTables 是一个优秀的表格插件,提供了针对表格的排序、浏览器分页、服务器分页、筛选、格式化等功能。 分页、排序、检索 Datatable与json之间数据转换,一个详细完整的例子!

    Jquery dataTable显示指定列

    `Jquery dataTable` 是一个强大且功能丰富的JavaScript库,用于处理HTML表格,提供了排序、过滤、分页等特性,极大地提高了用户体验。在描述中提到的场景中,用户可以通过选择框定制他们希望在表格中看到的列,这...

    Jquery dataTable后台获取数据示例

    1. **分页**: DataTables 提供了内置的分页功能,只需设置`pageLength`参数即可指定每页显示的数据量。用户还可以通过导航按钮在不同页面间切换。 2. **排序**: DataTables 支持对表格中的任何列进行排序。默认情况...

    jquery datatable serverside page 服务器端分页

    创建一个支持服务器端分页的DataTable,需要在初始化时设置`serverSide`参数为`true`。例如: ```javascript $(document).ready(function() { $('#example').DataTable( { "processing": true, "serverSide": ...

    JQuery DataTable中文文档API.chm

    初始化`DataTable`时,可以设置一系列参数来定制其行为,如`columnDefs`用于定义列的样式和行为,`ordering`控制列的排序,`searching`定义是否启用全局搜索,`paging`控制分页功能等。 **3. 表格操作(Table ...

    jquery datatable 单元格合并

    在IT领域,jQuery DataTables是一款广泛使用的数据展示插件,它提供了丰富的功能,如排序、搜索、分页等。在某些场景下,我们可能需要对表格中的单元格进行合并,以便更好地展示数据,例如汇总或者分类。本篇将详细...

    对DataTable进行分页

    对DataTable进行分页,对DataTable进行分页

    jQuery Datatable 自定义列1

    jQuery Datatable 是一个功能强大的表格工具,提供了许多实用的功能,例如排序、分页、查找等。在本文中,我们将重点讲解如何对 Datatable 中的表格内容进行操作,包括改变样式、增加一列非数据列、非数据列传递主键...

    对DataTable分页获取数据

    ### 对DataTable进行分页获取数据的方法解析 在处理大量数据时,为了提高用户体验及系统性能,通常会采用分页技术来展示数据。本篇文章将详细解释如何针对`DataTable`对象实现分页功能,并通过示例代码来具体说明其...

    jquery datatable api chm 中文

    jquery datatable api chm 中文

    jquery DataTable实现前后台动态分页

    在JavaScript部分,初始化DataTables并配置其分页参数。设置`serverSide`为`true`表明分页将在服务器端处理。`sAjaxSource`参数指定了发送分页请求的URL。同时定义了一个名为`retrieveData`的回调函数,该函数用于...

    jquery datatable服务端分页

    jQuery DataTable服务端分页是一种在服务器端处理分页数据的技术,而不是在客户端处理。这种方式可以减少客户端处理数据的压力,特别是在数据量较大时。服务端分页可以利用服务器强大的处理能力来完成分页操作,然后...

    使用jquery实现表格动态分页

    **一、jQuery分页插件的选择与使用** jQuery提供了许多分页插件,例如`jQuery DataTables`、`jQuery Pagination`等。以`jQuery DataTables`为例,它是广泛使用的表格增强插件,内置了强大的分页功能。 1. **安装和...

    jquery datatable 大数据分页面的解决方案

    ### jQuery DataTable大数据分页解决方案详解 #### 一、概述 在处理大数据时,尤其是在Web应用中展示大量数据,如何高效地进行数据分页是一项重要的技术挑战。jQuery DataTable插件因其强大的功能和灵活性,在Web...

    Jquery dataTable完整例子下载(取数据、分页、样式等)

    Action需要处理分页、排序和过滤参数,然后查询数据库并返回结果。`Struts2`的拦截器和结果类型可以轻松地将这些参数映射到Action方法,实现前后端的无缝对接。 **7. 扩展性** `DataTables` 插件生态系统丰富,例如...

    Jquery DataTable使用经典案例

    Jquery DataTable是一款强大的JavaScript库,用于处理HTML表格的数据展示、排序、过滤、分页和搜索功能,极大地提升了网页上表格的交互性和用户体验。在.Net环境下,开发者可以将Jquery DataTable与后端数据服务结合...

    Jquery DataTable基于Twitter Bootstrap的样式

    Jquery DataTable是一个很不错的表格插件。 1、功能强大,支持分页、服务器分页、表头表格等样式自定义 2、支持jedit等其他Jquery插件 3、支持ajax、dom、json等数据源; 4、众多使用者的实例代码

    dataTable分页插件

    2. 初始化DataTable,设置分页参数,如每页显示条数、分页模式等。 3. 使用提供的API或事件监听器来扩展和控制分页行为。 例如,你可能需要定义一个简单的HTML表格,然后通过JavaScript代码初始化DataTable,添加...

Global site tag (gtag.js) - Google Analytics