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

时间:2012-04-03 10:21:49

标签: php javascript ajax

这么长的故事简短,我试图建立一个聊天应用程序......好吧,它已经建立了类型,但是,我一直在尝试实现AJAX。基本上这样,当用户发布消息时,消息来自数据库,它会自动反映在页面上,而不会刷新页面。

在javascript方面,我能想到的唯一一个没有用户输入的事件是javascript setInterval()函数,我现在设置为每5秒重复@。

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

问题在于,每隔5秒就会发出相同的10条消息。一遍又一遍......破纪录的哈哈哈哈哈哈哈哈哈哈哈哈无论如何,所以我不知道/无法弄清楚如何实现,是一种过滤类型,或 某事 ,说“

  

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

所以我需要的是(我假设javascript,因为它刷新了一个页面),只说当它的新内容时才显示最新的x帖子。我想的可能是if / else将一个值与另一个值进行比较,然后如果为false / true,则运行刷新...但是 我比较什么???

你可以看到,我卡住了。

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

并且Js有AJAx命令来获取这些消息并在页面上发布它们。

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

任何提示,链接,LOGIC ...任何可以帮助我度过这个驼峰的事情我很高兴并且谦卑地欣赏。

P.S - 如果你需要看代码。让我知道并生病,但我认为非常清楚。

先谢谢。

3 个答案:

答案 0 :(得分:2)

所以网络聊天客户端做了这个事情,他们向服务器发出请求,服务器让它挂起,好像它需要很长时间才能处理,而是等着看其他人发帖聊天或者有什么它,当它做的那一刻,它回复用户,如果达到超时最大值,它只允许连接实际超时,此时javascript导致它再次触发。这消除了令人讨厌的问题,为每个5秒钟的首发功能打电话。

答案 1 :(得分:1)

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

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

将该查询结果返回给您的客户端,并同时更新上一个时间戳。

我无法帮助你,因为我没有任何代码,但这是实现它的一种方式。

答案 2 :(得分:1)

我一次只能获取1行,并记住收到的最后一行的ID,也可以在表中创建一个列read,并将其设置为1或{{ 1}},如果邮件接收设置为0,并且只查找读取设置为1的邮件。

MySQL声明:

0