Javascript 使用JQuery将数千行动态加载到表中

Javascript 使用JQuery将数千行动态加载到表中,javascript,php,jquery,oracle,datatables,Javascript,Php,Jquery,Oracle,Datatables,我正在为CRM开发一个面向前端的GUI。我们有一个分层的客户结构。每个客户都有许多他们账单上的地址、他们发送到的地址以及与每个帐户相关的联系人。我遇到的问题是,一些客户与该帐户关联的发货地址远远超过10000个。当一次调用所有对象时,这会成为一个问题。我的后端很好,它可以在大约280ms(平均)的时间内获取所有ship-to数据。我正在使用Javascript将所有信息加载到表中。以下是我目前正在做的事情: var r = new Array(); var j = -1, recordI

我正在为CRM开发一个面向前端的GUI。我们有一个分层的客户结构。每个客户都有许多他们账单上的地址、他们发送到的地址以及与每个帐户相关的联系人。我遇到的问题是,一些客户与该帐户关联的发货地址远远超过10000个。当一次调用所有对象时,这会成为一个问题。我的后端很好,它可以在大约280ms(平均)的时间内获取所有ship-to数据。我正在使用Javascript将所有信息加载到表中。以下是我目前正在做的事情:

    var r = new Array();
var j = -1, recordID;
r[++j] = '';

    //Loop through the data and build an array.
    for (i in data) {
        var d = data[i];
            recordID = d.id;
        r[++j] = '<tr>';
        r[++j] = '<td>'+ d['ADDRESS_LINE_1'] +'</td>';
        r[++j] = '</tr>';
    }
    //The line below joins the array and appends it to the table.
    $('#table').append(r.join(''));
var r=new Array();
var j=-1,recordID;
r[++j]='';
//循环遍历数据并构建一个数组。
对于(数据中的i){
var d=数据[i];
recordID=d.id;
r[++j]='';
r[++j]=''+d['地址线1']+'';
r[++j]='';
}
//下面的行连接数组并将其附加到表中。
$('#table')。追加(r.join('');
我已经和为我制作规格的人谈过了,他们需要所有人同时显示,没有过滤的可能。现在,在加载所有数据并打开模式之前需要~4秒的时间

有更快的方法吗?

$.map(你的数组,函数(值,键){
返回“”+值['ADDRESS_LINE_1']+';
});
$(“#表”).append(yourararyvar.join(“”));
这可以帮助您获得比循环更好的性能。
在这里了解更多信息,

不可能同时显示所有行,除非它们有一个真正的大屏幕。只需加载更多的滚动。如果屏幕上只有100条记录,就不要渲染10K记录。看看数据表,那么数据加载太慢是不是问题?@Brian OP还应该看看,如果你不喜欢使用数据表,你需要想出自己的机制,通过分页系统一次加载少量数据。datatables已经为您完成了这项工作。然而,这种方法很简单,即加载50条数据。用户请求更多,再加载50。这里有一些好的观点。Datatables是我的第一种方法,但它太慢了,我将查看延迟渲染。是否有一种方法可以将数据保存为数组,并调用数组值#0-50,当滚动到#51时,加载#50-100?如果这是可能的,那就太理想了。OP仍然在一次创建数千个dom元素。
$.map(yourArrayVar, function(value, key) {
   return '<TR><TD>'+value['ADDRESS_LINE_1']+'</TD></TR>';
});
$("#table").append(yourArrayVar.join(''));