您好,登錄后才能下訂單哦!
這篇文章主要介紹如何使用DataTable插件實現異步加載數據,文中介紹的非常詳細,具有一定的參考價值,感興趣的小伙伴們一定要看完!
table部分代碼
<table class="table table-bordered table-striped" id="table-main"> <thead> <tr> <th>用戶名</th> <th>渠道名</th> <th>游戲名</th> <th>結果</th> <th>耗時</th> <th>創建時間</th> </tr> </thead> </table>
異步加載數據并實現定制化
下面是簡單例子, 其中 table-main 的初始化元素為table的id。
$('#select-game').select2(); // 初始化搜索下拉框 // 表格漢化列表 var table_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_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) { //封裝請求參數 var param = {}; 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 () { //封裝返回數據 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); cut_td($("#table-main"), 40); // 表格截斷 }, 200); } }); }, //列表表頭字段 columns: [ { "data": "user_name" }, { "data": "channel" }, { "data": "game" }, { "data": "status", "render": function(data){ var status_name = ''; switch(data) { case 0: status_name = '未完成'; break; case 1: status_name = '腳本錯誤'; break; case 2: status_name = '成功'; break; case 3: status_name = '測試通過'; break; default : status_name = '未知'; break; } return status_name; }}, { "data": "cast_time", "render" : function(data){ if (data) { return data + '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-18 16:04:28", "format_updated_at": "2017-07-18 16: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-19 18:00:54", "format_updated_at": "2017-07-19 18:00:54", "game": "x", "channel": "y", "game_id": 11290, "channel_id": 67 } ] }
以上是“如何使用DataTable插件實現異步加載數據”這篇文章的所有內容,感謝各位的閱讀!希望分享的內容對大家有幫助,更多相關知識,歡迎關注億速云行業資訊頻道!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。