关于Ajax Success重新加载表

时间:2017-10-30 06:37:36

标签: javascript php mysql ajax html-table

我有以下问题我正在努力。

我有一个应用程序,其中有一个表格:

<table>
<tr>
   <th>bla</th>
   <th>bla</th>
   <th>bla</th>
</tr>
<?php foreach($bla as $b){ ?>
<tr>
   <tr><?=$b["bla"];?></tr>
   <tr><?=$b["bla"];?></tr>
   <tr><?=$b["bla"];?></tr>
</tr>
<?php }?>
</table>

所以我有这个表,它总是有一个标题和一些行(取决于变量$bla)。变量$bla来自db,只读取db中表的所有行。

我现在想要实现的是搜索,所以有人可以在输入字段中输入他的搜索查询,然后SQL - 再次执行查询,其中包含LIKE来执行搜索然后只显示包含搜索词的行。或者我可以想到简单地过滤我之前拥有的数组,所以我已经拥有变量中的所有行,我可以简单地暂时删除所有其他数组元素,不包含搜索的单词。

现在有两个问题:你认为什么会更高效?数据可能不会很快超过10,000行,这只是一个衡量标准。当用户完成输入,在数据库中搜索并直接显示该数据或者更好地过滤组合数组时,最好是查询数据库吗?

第二个问题:我该如何实现?我的意思是,&#34;数组过滤&#34; - 方法可能不是那么难,虽然我不确定如何过滤元素,如果它的多维(并且它是,因为有第一个级别为db中的每一行,db中的每一列的第二行)。 编辑:还:我会遇到与第二个(db-)解决方案相同的问题:如何在表中获取此过滤数据,因为该表也只加载一次,需要一些那边的javascript,就像第二个解决方案一样,我想。

但是我认为从db获取数据的方法有点困难。我想到的是发送一个AJAX请求,并且在成功时我可以提供搜索到的数组。但是:我怎样才能重新加载&#34;桌子?我定义不想重新加载整个页面,我想要一种实时搜索,所以页面一般应该保持不变,只有表格应该重新加载并显示从AJAX传递的变量的内容。我怎样才能做到这一点?我的意思是理论上我只能echo整个foreach使用AJAX发送数据的PHP文件中的新数据,然后设置&#34; old&#34; foreach到display:none并使用下面的新div并将其display:blockdata作为html属性传递,但这实际上并不优雅,而且必须有更好的解决方案我认为。

有什么想法吗?

1 个答案:

答案 0 :(得分:1)

我建议你为此目的使用prebuild JavaScript库。 https://datatables.net/是一种非常简单可靠的方式,可以在表格中显示您的数据以及搜索,分页等许多功能。

只需列出表中的所有数据并调用datatables jquery插件即可完成剩下的魔术。如果需要,您还可以轻松实现服务器端处理。