使用ajax优化显示表数据

时间:2012-07-03 18:02:22

标签: php codeigniter jquery

我在codeigniter框架中使用ajax,使用这样的代码将数据注入到预定义(现成的)表中......

    foreach ($this->results['rawData'] as $item){
            $str.="<tr onclick='document.location ='#'>"; // link to view record

            $str.='<td class="record-company-name"><input type="checkbox"></td>';
            $str.="<td>".$item->companyname."</td>";
            $str.="<td>".$item->city."</td>";
            $str.="<td>".$item->postcode."</td>";

....

            $str.="</tr>";
        }
echo $str;

该表还与jquery相关联,通过单击表头来提供数据的分页和排序。对于1000行,一切都很好,但是对于更多,它是慢的并且对于&gt; 5000我收到浏览器警告以退出脚本。数据变化不大。

问题是所有数据都被立即注入到表中,并且jquery处理的数据太多了。

通过每次仅注入1000条记录来改善这种情况的最佳方法是什么 与分页相结合。 CI分页课和memcache一起是一个很好的方法吗?

我确信这是一个常见问题。这个问题的最佳解决方案是什么?

欢迎所有建议。

3 个答案:

答案 0 :(得分:0)

我自己没有尝试过codeigniter框架,但是字符串连接(你正在使用)通常对大多数语言的性能都不利。也许您应该使用不同的approch,比如使用JQuery模板?

答案 1 :(得分:0)

所以通过注射你的意思是显示对吗? 即使后端更快,也要考虑用户。你一次下载5000行。 如何下载显示的内容?

您可以使用CI的pagination。至于数据排序,您只需使用CI的活动记录类$this->db->order_by(); 如果这种方法运行良好,那么你可以使用AJAX-ify整个事情,如果仍然需要它。

希望这会有所帮助。如果您需要更多帮助,请告诉我们。

答案 2 :(得分:0)

您可以考虑尝试使用jQuery Grid。它应该解决这个问题,它还为表格数据提供了更多的功能。