所以我们正在使用这样的数据表(1.9.4,旧版本):
$('table.classname').dataTable({
"bProcessing": true,
"bServerSide": true,
"sAjaxSource": "/something.php",
"fnServerParams": function ( aoData ) {
aoData.push( { "name": "param", "value": <?=$_GET['id']?> });
}
});
然后发生的事情是有人去使用搜索输入并可能输入类似“hello world”的东西 - 当用户输入时,dataTables插件然后对something.php进行11次单独的ajax调用, “H” 然后 “他” 然后 “HEL” ......等等。
在客户端发送请求之前,我没有看到在文档中引用的任何方式,如何在进行服务器调用之前添加延迟,比如1秒或1.5秒。
然而,我在这里看到了提及:http://legacy.datatables.net/release-datatables/examples/server_side/pipeline.html关于通过发送每个“下一个”分页操作的请求来重载服务器的问题,例如,这种担忧似乎更令人担忧,因为我一直在寻找。其他人解决了这个问题? (是的,我们确实需要优化服务器端API调用,但最小化来自dataTables的调用也会非常有用。)
答案 0 :(得分:3)
您可以使用fnServerData
(see the DataTables documentation)并去除Ajax调用。有许多不同的库可以去除某些东西,但我倾向于使用lodash或underscore中的那个。