使用DataTable插件实现异步加载数据
table部分代码
用户名 渠道名 游戏名 结果 耗时 创建时间
异步加载数据并实现定制化
下面是简单例子,其中table-main的初始化元素为table的id。
$('#select-game').select2();//初始化搜索下拉框 //表格汉化列表 vartable_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":":以降序排列此列" } }; //初始化表格 vartable_main=$("#table-main").dataTable({ language:table_lang,//提示信息 autoWidth:false,//禁用自动调整列宽 lengthMenu:[25,50,100], stripeClasses:["odd","even"],//为奇偶行加上样式,兼容不支持CSS伪类的场合 processing:false,//隐藏加载提示,自行处理 serverSide:true,//启用服务器端分页 searching:true,//启用原生搜索 orderMulti:true,//启用多列排序 order:[],//取消默认排序查询,否则复选框一列会出现小箭头 renderer:"bootstrap",//渲染样式:Bootstrap和jquery-ui pagingType:"simple_numbers",//分页样式:simple,simple_numbers,full,full_numbers columnDefs:[{ "targets":'nosort',//列的样式名 "orderable":false//包含上样式名‘nosort'的禁止排序 }], ajax:function(data,callback,settings){ //封装请求参数 varparam={}; param.limit=data.length;//页面显示记录条数,在页面显示每页显示多少项的时候 param.start=data.start;//开始的记录序号 param.page=(data.start/data.length)+1;//当前页码 //ajax请求数据 $.ajax({ type:"GET", url:"getRecodeList", cache:true,//开启缓存 data:param,//传入组装的参数 dataType:"json", success:function(result){ //console.log(result); //setTimeout仅为测试延迟效果 setTimeout(function(){ //封装返回数据 varreturnData={}; 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); cut_td($("#table-main"),40);//表格截断 },200); } }); }, //列表表头字段 columns:[ {"data":"user_name"}, {"data":"channel"}, {"data":"game"}, {"data":"status", "render":function(data){ varstatus_name=''; switch(data) { case0:status_name='未完成';break; case1:status_name='脚本错误';break; case2:status_name='成功';break; case3:status_name='测试通过';break; default:status_name='未知';break; } returnstatus_name; }}, {"data":"cast_time", "render":function(data){ if(data) { returndata+'s'; } else { return'废弃'; } }}, {"data":"format_created_at"}, ] }).api();
后台数据返回格式
{ "total":234, "per_page":"25", "current_page":1, "last_page":10, "next_page_url":"http://local.dgc_sdkops.com/monitor/log_pack/getRecodeList?page=2", "prev_page_url":null, "from":1, "to":25, "data":[ { "id":128, "user_id":1, "task_id":"package_128_113", "channel_version_id":128, "game_version_id":113, "extend_id":0, "type":"pack", "status":2, "remark":"", "cast_time":93475, "created_at":"1500365068", "updated_at":"1500458543", "user_name":"admin", "format_created_at":"2017-07-1816:04:28", "format_updated_at":"2017-07-1816:04:28", "game":"x", "channel":"y", "game_id":11290, "channel_id":67 }, { "id":240, "user_id":1, "task_id":"package_128_113", "channel_version_id":128, "game_version_id":113, "extend_id":0, "type":"pack", "status":0, "remark":"", "cast_time":0, "created_at":"1500458454", "updated_at":"1500458454", "user_name":"admin", "format_created_at":"2017-07-1918:00:54", "format_updated_at":"2017-07-1918:00:54", "game":"x", "channel":"y", "game_id":11290, "channel_id":67 } ] }