这么长的故事简短,我试图建立一个聊天应用程序......好吧,它已经建立了类型,但是,我一直在尝试实现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 - 如果你需要看代码。让我知道并生病,但我认为非常清楚。
先谢谢。
答案 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