2016-11-09 51 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

相关问题