通过ajax填充表格非常慢

时间:2010-09-15 14:48:36

标签: javascript html ajax json xhtml

我编写了一个以json方式返回一些数据的Web服务。要在表中显示它,我使用datatables jquery插件:

for(var i=0;i<results.length;i++){
       myTable.fnAddData( [
       "<input name='codeSearched' type='radio' value='"+results[i].ID+"' />",
       "<span id='code_"+results[i].ID+"'>"+ results[i].code+"</>",
       results[i].description ] ,true);
}

这个javascript似乎杀了浏览器。 (firefox上只有几千行的20秒以上)。通过将服务器端渲染为html片段并直接插入dom,我已经将相似数量的数据加载到数据表表中,然后再提高了数量级。

你能推荐一种方法来充分利用这两个方面吗? (即,调用ajax Web服务,以开放的结构化格式提供数据,但也可以快速解析和呈现?

感谢您的任何建议

2 个答案:

答案 0 :(得分:1)

为什么不尝试将最后一个参数设置为“false”?它应该运行得更快,但用户必须等到表填充。

如果它足够快,你可能想让它更具交互性,也许你可以设置参数“false”,但每10或100条记录“true”以允许重绘表格。

填写数千个单选按钮列表的原因超出了我的意思......它听起来不像是一个好的用户界面练习,但你必须有自己的理由。

祝你好运!

路易斯

答案 1 :(得分:0)

您需要获取一些时间信息,以了解您的通话回复的速度。

我有两种方法可以做到这一点,一种方法是使用萤火虫来查看它需要多长时间,还可以在我的通话时间内进行计时,这样我就可以看到从开始通话到实际完成时间有多长

如果这是可以接受的,那么构建表就是问题所在。

你会想看看这篇文章,以确保你的技术不会在时间上杀死你,因为使用DOM函数和innerHTML之间存在不同。

http://www.quirksmode.org/dom/innerhtml.html

下一个问题是,如果您正在尝试完全构建表,您会发现浏览器在完成之前不会显示它,这可能是一个杀手。

所以,我过去所做的就是把它分成几部分。所以,我建立了大约100行,然后使用setTimeout以便浏览器可以显示它,然后我构建下一批,直到我完成。

这样用户可以快速查看表的第一部分,并且应该在他们需要构建整个表之前完成(例如,如果他们需要查看底行)。

一次构建多少行是用户需求与性能之间的权衡。