我是HTML,PHP,CSS和Javascript的新手。如果这意味着什么,我在C ++中有一些背景知识。为了练习我的网站编程,我决定建立一个简单的聊天室网站。基本上,用户登录该站点,当他们在“聊天室”中输入消息时(通过键入文本字段并单击提交按钮),该消息将被附加到ChatData.txt。然后读取ChatData.txt并显示在iframe中。 iframe仅显示聊天数据,每5秒刷新一次。这都是使用PHP和HTML完成的。
我想知道的是,是否有可能不是每5秒刷新一次iframe,而是强制所有客户端仅在单击提交按钮时刷新iframe?
我在想,不管怎么说,有一种方法可以使用PHP / Javascript向所有浏览器发送刷新。
感谢。
答案 0 :(得分:1)
技术上的刷新是强制客户端手动请求新数据 - 即使不存在。但是,您尝试做的是让服务器/后端在可用时推送新的更改。
有许多方法可以执行此操作。这是一个很好的起点:How do I implement basic "Long Polling"?
答案 1 :(得分:1)
您可以删除iframe节点并通过javascript动态重建它。
下面是如何通过jQuery实现它的基本方法。你的iFrame周围需要一个包装器(<div id="reload"></div>
),其ID为“reload”。
$(document).ready(function() {
setInterval(function() {
$("#reload").html('<iframe src="/path/to/script.php"></iframe>');
},5000);
});
这可能会达到您的目标但不理想,因为它可能会对浏览器造成负担。理想情况下,对脚本进行异步调用并通过javacript创建HTML节点将是更好的选择。然而,为了正确地构建它,这将需要更多的研究/学习。 (由于重新加载,你没有得到闪烁的iframe屏幕)