【问题标题】:On Ajax Success reload table关于 Ajax 成功重新加载表
【发布时间】:2018-04-11 01:58:19
【问题描述】:

我正在处理以下问题。

我有一个应用,上面有一张桌子:

<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 来自一个数据库,只是从我的数据库中的一个表中读取所有行。

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

现在有两个问题:您认为哪个性能更好?作为衡量标准,数据可能不会很快超过 10.000 行。用户输入完毕后总是查询数据库,在数据库中搜索并直接显示该数据会更好还是过滤组成数组会更好?

第二个问题:我该如何实现?我的意思是,“数组过滤”方法可能并不难,尽管我不确定如何过滤元素,如果它是多维的(确实如此,因为 db 中的每一行都有第一级,第二个对于 db 中的每一列)。 编辑: 还有:我会遇到与第二个 (db-) 解决方案相同的问题:如何在表中获取过滤后的数据,因为该表也只加载一次,需要一些javascript 在那里,就像第二个解决方案一样,我猜。

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

有什么想法吗?

【问题讨论】:

    标签: javascript php mysql ajax html-table


    【解决方案1】:

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

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

    【讨论】:

    • 看起来很有希望,您认为实现这一点需要付出很大的努力吗?我怎样才能开始使用它?
    • 哦,好吧,这很简单,它已经开始工作了,感谢您的精彩提示!
    猜你喜欢
    • 2016-12-17
    • 2023-04-05
    • 2011-12-14
    • 1970-01-01
    • 2020-06-27
    • 1970-01-01
    • 1970-01-01
    • 2018-05-09
    • 1970-01-01
    相关资源
    最近更新 更多