我正在为我的朋友制作一个社交网站。我想知道当数据库中添加新记录时,如何更新包含数据库中少量插入记录的 Div。简而言之,你一定见过 Facebook 的实时通知,当有人做某事时,这些通知就会淡出。这一切都发生在没有刷新整个实时通知 div 的情况下。只有新通知会添加到 div 前面。
我想使用 jquery 和 AJAX 来做到这一点,因为我对它们有很好的了解。 PHP作为服务器端语言。
先感谢您。
P.S:我在很多网站上搜索了解决方案,但找不到任何地方。我什至尝试浏览 facebook 的源代码,但也找不到它!我希望有人在这里帮助我!*交叉手指*
您可以使用 Ajax Push 发送帖子已更新的通知,也可以使其成为拉动驱动。如果您已经了解 PHP 中的 jquery 和 Ajax,那么后者对您来说可能会更容易。
按一定时间间隔定期检查新记录(使用setInterval
,例如),如果找到它们,将它们加载到 DOM 并淡入它们。间隔不必非常小并且浪费资源..也许只要每 30 秒就可以了。
setInterval('checkForUpdates', 30000);
var lastTime = (new Date()).getTime();
function checkForUpdates() {
$.get('/php-page-that-checks-for-updates.php?timestamp=' . lastTime
, function (results) {
if (results) { /* fade into dom */ }
}
);
lastTime = (new Date()).getTime();
}
PHP页面:
$timestamp = $_REQUEST['timestamp'];
$results = query('SELECT post FROM posts WHERE postTime > "$timestamp"');
echo fetch($results);
正如其他人所建议的,您还可以将帖子标记为“已读”,并将其用作指示器而不是时间戳,这也将解决我的示例中的时区问题。我不想只是为了做到这一点而添加一个额外的列,但如果您由于其他原因已经有了一个列,那将是一个好主意。
编辑:这是一个相当古老的答案,但如果你仍然可以做到这一点,我会使用 WebSockets 而不是任何类型的 ajax 长轮询。我不认为 PHP 是一种很棒的语言(我建议将 socket.io 与 Node.js 一起使用),但这是可能的。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)