我的场景类似于此处发布的场景: Using DataTables Server side processing with Google Apps Script
我目前正在将DataTable与GAS一起使用。我在远程服务器中有一个PHP API,可以访问MySQL数据库。 在GAS中,我使用UrLFetch通过API查询数据库,而API又以JSON格式返回数据。我当前的实现从数据库中获取所有数据,并使用DataTables创建带有获取数据的表。 然而,我的数据库不断变大,我想使用ajax的服务器端处理功能来处理服务器端的繁重负载。 我正在努力研究如何在GAS及其HTMLService中实现它。我不知道我的思维过程是否正确(也许我过度复杂化了)但我想做的是: jQuery DataTables-> GAS HTMLService-> PHP API-> MySQL - (数据) - > PHP API-> GAS HTMLService-> jQuery DataTables
从上面的stackoverflow链接调用ajax函数中的google.script.run
应该会有技巧,但它对我不起作用。我收到错误Uncaught TypeError: Failed due to illegal value in property: ajax
。
我特别不清楚在这种情况下如何在callback
方法中使用settings
和google.script.run
变量。
这是代码:
$('#example').dataTable( {
"processing": true,
"serverSide": true,
"ajax": function (data, callback, settings) {
google.script.run.withSuccessHandler(callback).getLogList(settings);
}
} );
这是DataTables服务器端处理的手册。
DataTables Server Side Manual
正如手册中提到的,DataTables将各种数据发送到服务器,
为了让服务器知道需要什么。从我想要的实现,这些数据应该发送到GAS(我想通过GET方法),
然后GAS通过e
中的doGet(e)
参数获取数据,然后查询PHP API。
这导致上述代码混乱,因为发送到服务器的数据包含在draw
而不是settings
中。使用settings
替换data
会返回Uncaught TypeError: Cannot read property 'aaData' of undefined
。
我不明白我该怎么做这个实现。 如果有人能让我朝着正确的方向前进,我将非常感激。示例代码会有很大的帮助!
谢谢!