2016-11-09 50 views
1

我試圖在服務器端處理模式下使用數據表,從而異步地將數據加載到批次中。這是對於海量數據集非常有用的。文檔足夠清晰(https://datatables.net/examples/data_sources/server_side.html),但是,我正在努力研究如何在Google Apps腳本及其HTML服務中實施它。如何在Google Apps腳本中使用Datatables服務器端處理

我目前使用的(這是工作)什麼是數據表加載所有的數據在一次

$(document).ready(function() { 
    google.script.run.withSuccessHandler(loadLogList).getLogList(); 
}); 

function loadLogList(data) { 
    if (data) { 
    for (var i = 0; i < data.length; i++) { 
     htmlString += "<tr><td>" + data[i][0] + "</td>"; 
     htmlString += "<td>" + data[i][1] + "</td>"; 
     htmlString += "<td>" + data[i][2] + "</td>"; 
     htmlString += "<td>" + data[i][3] + "</td></tr>"; 
    } 
    $("#LogListBody").html(htmlString); 
    } 

    var table = $("#LogList").DataTable({ 
    "columnDefs": [ 
     { "orderData":[ 0 ], "targets": [ 1 ] }, 
     { 
     "targets": [ 0 ], 
     "visible": false, 
     "searchable": false 
     } ], 
    "paging": true, 
    "select": true 
    }); 
} 

的文件表明,數據表需要初始化是這樣的:

$(document).ready(function() { 
    $('#example').DataTable({ 
     "processing": true, 
     "serverSide": true, 
     "ajax": "../server_side/scripts/server_processing.php" 
    }); 
}); 

所以不知何故,我需要提供「ajax」與「google.script.run」。有任何想法嗎?然後我需要在服務器端編寫一個函數(Code.gs)來返回json格式的數據。如果有人有這樣的代碼示例,我會非常感激。

謝謝

回答

0

查看文檔ajax可以用幾種不同的方法配置。一種是通過提供自定義功能。 https://datatables.net/reference/option/ajax

根據來自op的更多信息編輯。這是非常基本的設置:

$('#example').dataTable({ 
    "processing": true, 
    "serverSide": true, 
    "ajax": function (data, callback, settings) { 
    google.script.run.withSuccessHandler(callback).getLogList(settings); 
    } 
}); 
+0

該插件已經解析了加載到DOM中的內容。我想轉移到一個異步方案,在需要時將數據拉出。 – h0dges

+0

得到它。您想要取消您發佈的代碼。看看我發佈的有關使用ajax調用的自定義函數的文檔。 –

+0

@SpencerEaston我和OP有着完全相同的問題。我嘗試了你的代碼,但它返回'失敗,由於屬性中的非法值:ajax'。由於你有一個想法,爲什麼它這樣做?使用withSuccessHandler方法中的'callback'是否正確? – mkab

相關問題