Ajax / js刷新,限制显示/从php / sql获取的内容


Ajax / js on refresh, limit content shown/gotten from php/sql

长话短说,我正在尝试构建一个聊天应用程序......好吧,它已经构建了,但是,我一直在尝试在其中实现AJAX。本质上,当用户发布消息时,当消息从数据库通过时,它会自动反映在页面上,而无需页面刷新。

在 JavaScript 方面,我能想到的唯一可以在没有用户输入的情况下运行的事件是 JavaScript setInterval(( 函数,我现在设置为每 5 秒重复一次 @。

在有消息(回显(的 PHP 端,我有一个只显示最近 10 条消息。

问题是,每 5 秒,它就会吐出相同的 10 条消息。 一遍又一遍...打破记录有点哈哈。无论如何,所以我不知道/无法弄清楚如何实现的是一种过滤器,或者"

嘿只向我显示最后 10 条消息,并且仅在有 新内容。

"

所以我需要的是一些东西(我假设是javascript,因为它是刷新页面的那个(,它说仅在其新内容时才显示最新的x帖子。我在想也许是一个 if/else 将一个值与另一个值进行比较,然后如果为假/真,则运行刷新......但我能和什么比较???

如您所见,我卡住了。

我不发布代码,因为它很多...不想在这里放两块代码,但本质上 PHP 从数据库部分读取行,并通过 echo 从数据库发布最新的 10 篇帖子。

Js 具有 AJAx 命令,可以获取这些消息并将其发布到页面上。

同样,除了在 ajax/js 刷新时重新发布相同的 10 条消息外,两者都有效。

任何提示,链接,逻辑...任何能帮助我度过这个驼峰的事情,我都很高兴和谦卑地感谢。

附言 - 如果您需要查看代码。 让我知道并发布它,但我认为它很清楚。

提前谢谢。

所以网络聊天客户端会做这件事,它们向服务器发出请求,服务器让它挂起,好像它需要很长时间来处理,但相反,它等待看看其他人是否发布聊天或你有什么,当它这样做时,它会回复用户,如果达到最大超时, 它只是允许连接实际超时,此时JavaScript会导致它再次触发。这消除了令人讨厌的,每 5 秒为初学者拨打一次电话的功能。

在你的 javascript 中保留一个最后返回的时间戳,当你需要更新客户端时,发送它,并将其用作你的 sql 条件:

select * from chat_logs WHERE datetime > $postedValueFromClient # AND YOUR OTHER CONDITIONS

将该查询结果返回给客户端,并更新上次时间戳。

由于我没有任何代码,我无法进一步帮助您,但这是实现它的一种方法。

我会一次获取 1 行并记住收到的最后一行的 ID,例如在表中制作一列read并将其设置为 10 ,如果消息接收设置为 1 并且只查找已读取设置为 0 的消息。

MySQL 语句:

SELECT * FROM `table` WHERE `id` > `lastID` AND `read` = 0;