我看过很多tablesorter的例子当用户想要在表中添加或删除行时触发更新,但我想看看它是否有可能在数据库发生变化时重新加载整行或 tbody?
这是我的想法,请告诉我这是否是个好主意。
JAVASCRIPT 和 PHP 中的设置:
1. 当页面首次加载时,脚本将获取一个 (.PHP) 页面,该页面将显示 lastUpdate(例如:'2013-07-18 10:37:29') .PHP 页面将转到数据库 (MySQL) 并获取 lastUpdate 并显示它)这个 lastUpdate 信息(日期/时间)将保存在 VAR 中以备后用。
2. 添加一个计时器,该计时器将对同一个 (.PHP) 页面执行 ping 操作,并将其 lastUpdate 与我们在首次加载页面时获得的初始 lastUpdate 进行比较。
3.我们将每隔 x 秒(可能是 10 秒)继续执行 ping 操作,以嗅探数据库中对 lastUpdate 的更改。
4.(比较):如果最初的 lastUpdate 值小于我们刚刚从数据库中获取的值,那么这意味着数据库的内容已被更改,它会做一个两种可能的事情。
从现在开始我想做的是:
选项 1: 仅删除旧行并将其替换为更新的行。 每行都有一个唯一的 ID,因此 javascript 也可以获取此 ID#,然后只更新表中的该行。
或
选项 2: 删除当前 Tbody,然后使用新数据重新加载整个 Tbody。
表格有很多行/列并使用图像、hrefs 等等...所以每一行都是很重的行,这就是为什么我想尽可能使用选项 1 的原因,但我不知道如何完成这最后一部分!?
(与聊天程序不同)行不必按正确的顺序排列,只要我知道数据库中哪个 ID 已更新即可。
假设我们有一个地址簿,用户可以编辑/更新、添加、删除联系人和联系信息。现在我只想扫描更改并在发现更改时发送 ID 和数据从数据库到表中的行通过ID匹配它然后更新它或删除旧的并用新的替换它,但是如果在数据库中找不到id则从表中删除id因为它不再在数据库中。
所以我可能遇到的唯一问题是不止一个用户同时进行了更改(比如在同一秒),然后只显示一个更新。但我认为这可以通过检查数据库是否有任何其他具有确切日期/时间的不同 ID 来绕过,如果有则更新它们。
非常感谢您阅读本文并感谢您为我提供的任何帮助。
最佳答案
选项 1。来回发送的数据较少。更少的渲染。
这就是我要做的:
有一个 JS
setTimeout 函数和 AJAX
检查我的服务器端脚本/servlet/等等。如果有任何行与 SQL
查询匹配,我会通过 JSON
将它们发回。
返回 JSON 后,我将解析每个 JSON
对象(表行),并用新数据替换相应的 TR
。
关于php - Tablesorter 重新加载 tbody 或仅在数据库更改/更新时重新加载该行,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17728692/