【发布时间】:2018-12-03 17:13:19
【问题描述】:
我有一个 jQuery datatable,可以提供超过 7 万条记录。
很遗憾,datatable 无法加载超过 20K 的记录。
我在尝试解决方法时使用选项deferRender,但无济于事。
$.ajax({
url: 'api/portmbs.php',
type: 'POST',
data: data,
dataType: 'html',
success: function(data, textStatus, jqXHR)
{
var jsonObject = JSON.parse(data);
var table = $('#example1').DataTable({
"data": jsonObject,
"columns": [
{"data": "column_one"},
{"data": "column_two"},
// more columns...
],
"iDisplayLength": 25,
"order": [[ 1, "desc" ]],
"paging": true,
"scrollY": 550,
"scrollX": true,
"bDestroy": true,
"stateSave": true,
"autoWidth": true,
"deferRender": true
});
},
error: function(jqHHR, textStatus, errorThrown)
{
$('#loadingDiv').hide();
$('#errorModal').modal('show');
$('.message').text('There was an error conducting your search. Please try again.');
return false;
console.log('fail: '+ errorThrown);
}
});
使用上述,会触发错误并带有相应的错误消息:
加载资源失败:服务器响应状态为 500 (内部服务器错误)
当我向生成数据的查询添加10000 限制时,datatable 被成功呈现。
要让deferRender 选项成功运行并延迟加载 70K 记录,我缺少什么?
【问题讨论】:
-
谁需要同时查看 70K 行?
-
«500 Internal Server Error 是一个非常普遍的 HTTP 状态代码,表示网站服务器出现问题...» ref
-
前段时间我也遇到过类似的情况,我的问题是我试图从服务器获取的数据溢出了
PHP的memory_limit变量(我认为默认是128MBonphp.ini)。您可以尝试增加此值(我的现在是 512MB),但请注意在此处阅读更多内容:haydenjames.io/understanding-php-memory_limit -
@JohnBeasley 好的,告诉我这是否有帮助,另外,请记住在更改配置文件时重新启动服务器。
-
@JohnBeasley 这种情况的真正解决方案是使用
server-side处理,并且在表上的每个分页/排序/过滤上向服务器发布一个帖子以获取新数据,认为这是一个临时的解决方法,但不是最终解决方案。如果这对其他人有帮助,我会做出回答。
标签: jquery ajax datatables