DataTable的Ajax使用
DataTable
Datatables是一款jquery表格插件。它是一个高度灵活的工具,可以将任何HTML表格添加高级的交互功能。
官网: https://datatables.net/
中文网: http://www.datatables.club/
用法:
先从最简单的开始:导入导入dataTable需要的js与css- css http://cdn.datatables.net/1.10.15/css/jquery.dataTables.min.css
- js http://cdn.datatables.net/1.10.15/js/jquery.dataTables.min.js
HTML
<table id="example" class="display" cellspacing="0" width="100%"><thead><tr><th>Name</th><th>Position</th><th>Office</th><th>Extn.</th><th>Start date</th><th>Salary</th></tr></thead><tfoot><tr><th>Name</th><th>Position</th><th>Office</th><th>Extn.</th><th>Start date</th><th>Salary</th></tr></tfoot></table>
Js : 初始化表格
$(document).ready(function() {$('#example').DataTable( {"ajax": "data/objects.txt", "columns": [{ "data": "name" },{ "data": "position" },{ "data": "office" },{ "data": "extn" },{ "data": "start_date" },{ "data": "salary" }]} );
} );
这是使用Ajax的例子,知道的朋友都知道现在都是使用前后端分离+Ajax返回Json数据来进行数据的传递的。dataTable支持 Ajax + Josn 的形式返回数据并解析渲染。
json : 数据格式
{ "name": "Tiger Nixon", "position": "System Architect", "salary": "$3,120", "start_date": "2011/04/25", "office": "Edinburgh", "extn": "5421" }
json就不多说了,另外推荐一个格式化json的网站,蛮好用的 https://www.bejson.com/
完整案例:
<table id="table" class="table table-bordered table-hover"><thead><th width="10%">成交编号</th><th width="5%">签约人</th><th width="5%">买方</th><th width="5%">卖方</th><th width="10%">房源信息</th><th width="10%">总价(元)</th><th width="5%">成交时间</th><th width="6%">状态</th><th width="15%">操作</th></thead><tbody> <!--tbody中的内容dataTable会自动填充--></tbody>
</table>
- 这里table的Id是初始化要用到的
js代码:
var table = $("#table"); //定义表格接下来好初始化 table.dataTable({ //表格渲染开头时可以设置一些配置参数(如果你刚开始接触也可以啥都不配)"bSort" : false, // processing : true, //是否显示处理状态(排序的时候,数据很多耗费时间长的话,也会显示这个)serverSide : true, //是否开启服务器模式searching : false, //是否允许Datatables开启本地搜索autoWidth : true, //自适应宽度language : {url : '/js/plugins/dataTables/language/Chinese.json' //DataTables语言配置选项},ajax : {url : "/deal/getxxxList", //访问路径,返回Json数据data : function(d) { //传递参数 rowCode1 = 0;planify(d);d.timeStart = $("#timeStart").val();d.timeEnd = $("#timeEnd").val();d.departmentId = $("#selectDepartment option:selected").val();d.price = $("#selectPrice option:selected").val();d.keywords = $("#keywords").val();d.dealStatus = $("#selectDealStatus option:selected").val();d.paidStatus = $("#selectPaidStatus option:selected").val();d.alreadySplit = $("#selectAlreadySplit option:selected").val();},type : "POST" //设置请求类型},columnDefs : [ { //设置列定义初始化属性"defaultContent" : "", //为列设置默认的静态内容"targets" : "_all" //指定所有列} ],columns : [ //数据渲染,固定格式,下面每一个对应表格一个td{"name" : "dealCode", //后台返回json数据 这是名"data" : "dealCode" //这是值,一定要对应}, {"name" : "dealUserName","data" : "dealUserName"},{"name" : "custName","data" : "custName"},{"name" : "ownerName","data" : "ownerName"},{"name" : "houseSource","data" : function(row) { //这是第二种写法,运用场景是你要做判断写js的时候可以这样写//这个"row"就是数据源,可以通过 row.xx来获取json返回的数据,名字要对上var projectStr = "";if (typeof (row.projectName) == "undefined" && row.houseSourceProject == undefined) {return "";}var buildArea = "";if (parseInt(row.buildArea) > 0) {buildArea = row.buildArea;}//优先取楼盘名称if(row.houseSourceProject != undefined && row.houseSourceProject != ""){projectStr = row.houseSourceProject;}else if(row.projectName != undefined && row.projectName != ""){projectStr = row.projectName;}else{projectStr = "";}return projectStr + " " + buildArea + "㎡"; // 返回的值就是表格td的值}},{"name" : "dealPrice","data" : "dealPrice"},{"name" : "dealTimeStr","data" : "dealTimeStr"},{"name" : "dealStatus","data" : function(row) {var status = row.dealStatus;var split = row.alreadySplit;var paid = row.paidStatus;var s1 = "";var s2 = "";var s3 = "";if (status == 0) {s1 = "未审核<br>";} else if (status == 1) {s1 = "已审核<br>";} else if (status == 2) {s1 = "已作废<br>";} else {s1 = "<br>";}if (split == 0) {s2 = "未分配<br>";} else if (split == 1) {s2 = "已分配<br>";} else {s2 = "<br>"}if (paid == 1) {s3 = "已回款";} else if (paid == 0) {s3 = "未回款";} else if (paid == 2) {s3 = "部分回款";}return s1 + s2 + s3;}},{"name" : "doElse","data" : function(row) {var html = "<table><tr>";if (row.dealStatus == 0) {html += "<td><a class='get_detail btn-xs btn btn-outline btn-light' data-toggle='modal' data-target='#dealDetail' onclick='openOldDetail("+row.dealId+",1,\"" + row.dealCode +"\")' dealId='"+row.dealId+"'><span>查看</span></a></td>";} else if (row.dealStatus == 1) {html += "<td><a class='get_detail btn-xs btn btn-outline btn-light' data-toggle='modal' data-target='#dealDetail' onclick='openOldDetail("+row.dealId+",2,\"" + row.dealCode +"\")'><span>查看</span></a></td>";if (row.paidStatus != 1) {html += "<td><a data-toggle='modal' onclick='toGetPaid("+ row.dealId+ ")' data-target='#myModal3' class='btn-xs btn btn-outline btn-light'>收款</a></td>";}html += "<td><a class='get_detail btn-xs btn btn-outline btn-light' onclick='preview("+row.dealId+",\"" + row.dealCode +"\")'>业绩确认单</a></td>";} else {html += "<td><a class='get_detail btn-xs btn btn-outline btn-light' data-toggle='modal' data-target='#dealDetail' onclick='openOldDetail("+row.dealId+",2,\"" + row.dealCode +"\")' dealId='"+row.dealId+"'><span>查看</span></a></td>";}html += "<td><a onclick='deleteDealDetail("+ row.dealId+ ")' class='btn-xs btn btn-outline btn-light'>删除</a></td>";html += "</tr></table>";return html;}} ]});
注意的几个点:我刚开始做的时候也是一脸懵b的。
- 不止我这一种写法,有很多种写法,我这种的应用场景适用于 Ajax + json 数据来做。(我也只会这一种,我一个写后台的我容易吗)
- 参数配置丰富到你想吐,文档都在官网中有,我还是写出来吧:http://www.datatables.club/reference/option/
- 数据一定要对上,少一个都不行,你表格中写了多少个th,你在columns中就要写多少个。
其实非常的简单,只要你的数据个数能够对的上并且后台数据是标准json格式,你没有打错的话,都是没毛病的。
顺便讲讲dataTable的分页:
@RequestMapping(value = "getXXXList", produces = "text/html;charset=UTF-8")
@ResponseBody
public String getOldHouseList(HttpServletRequest request, DataTableFormVo vo) {//注意这个 DataTableFormVo 参数这个参数是用来接收dataTable传递过来的一个vo对象,其中就包括分页必须的两个参数,第几条到第几条,再利用mysql的limit进行分页就很简单了//业务代码就不写了return resultVo.toString();}
到这里就发现,dataTable不是自带分页吗,怎么还要用limit了
这么说你就明白了,dataTable自带的分页不是物理分页,如果我有一千万条数据不就嗝屁了,所以我们还是乖乖的用物理分页吧。
刚刚开始写博客,可能写的很粗糙,感谢你能看到这里。
转载于:https://www.cnblogs.com/bkyxnc/p/9214147.html
DataTable的Ajax使用相关推荐
- JQuery dataTable 扩展+Ajax Post,Get一些基本操作(二)
简单的小demo ,, 主要是讲如何在dataTable 中 进行 行 的编辑, 如做delete,edit ,等操作的时候 如何获取 改行的一些主要数据. 1 <div class=&quo ...
- JQuery dataTable 扩展+Ajax Post,Get一些基本操作(一)
首先, Asp.net MVC 系列暂时没有发现封装好的 类似于web form 的datagrid, 只有一款Jquery 的dataTable , 官网地址 http://www.datatabl ...
- JQuery使用Datatable插件(二)——使用AJAX与后端交互
一.html代码(我自定义了一个搜索框,同时用到了bootstrap框架) 注意引入相应文件,同时table一定要有thead <!DOCTYPE html> <html> & ...
- Jquery DataTable基本使用
1,首先需要引用下面两个文件 <link rel="stylesheet" href="https://cdn.datatables.net/1.10.16/css ...
- (引)ajax 经验-保留自己使用
看到一篇很好的文章,引用下来,保留一下 呵呵 AJAX急速狂飙:开发www.99scj.com体验(1) 借用了梅花兄的一个惯用语:急速狂飙. 首先我来说说对ajax.net和atlas的比较吧!免得 ...
- jquery datatable的详细用法
1,首先需要引用下面两个文件 <link rel="stylesheet" href="https://cdn.datatables.net/1.10.16/css ...
- datatable的使用
学习可参考:http://www.guoxk.com/node/jquery-datatables http://yuemeiqing2008-163-com.iteye.com/blog/20069 ...
- vue ajax传输数组,ajax请求回数组数据,Vue页面数组没同步问题
记录bug 为什么 ajax 获取到了 vm.$data.list 页面上却没有显示出来的? 代码 //页面 {{ *** }} //请求数据 send: function(){ var that = ...
- Angularjs DataTable表格自动刷新
Angularjs DataTable表格自动刷新 前盐 在angularjs中使用了DataTable,但是数据不会自动刷新,看了一下文档,发现了可以使用ajax重新加载就可以了. 开始 这是Dat ...
最新文章
- ueditor1.4.3jsp版成功上传图片后却回显不出来与在线管理显示不出图片的解决方案...
- 实验七多线程编程_JAVA
- hadoop 2.9.2 yarn配置公平调度器
- 计算机的桌面图片还原,电脑桌面图标重启后自动复原的解决方法。
- ECMAScript 6规范总结(长文慎入)
- hdu3094 A tree game
- 关于JavaScript中apply与call的用法意义及区别(转)
- Winxp系统文件夹完全解析
- 19-基础教育知识图谱赋能智慧教育
- 学生信息管理系统(数据库)
- java delete()_Java File delete()用法及代码示例
- python容易学ma_初学者学python 初学者学python好学吗
- Rhinoceros 5 mac版(犀牛三维建模软件)汉化破解版
- 安装truffle的前提条件(nodejs和npm),truffle的webpack案例测试,webpack项目中的报错
- 通过TXT文件批量制作MSI条码
- 快速的把ppt转换成word用什么转换
- 使用cat命令创建文件并写入数据
- uiuc计算机科学学院爬虫,一种基于爬虫的分布式PPLive流实时检测系统研究.pdf
- 利尔达芯智行:破解两轮出行行业智能化难题
- php论文的外文期刊,万方数据知识服务平台 (学位论文 、学术期刊、会议论文、外文文献)...