【问题标题】:PHP - Update iFrame When A New Message is Recieved [closed]PHP - 收到新消息时更新 iFrame [关闭]
【发布时间】:2016-03-28 05:36:22
【问题描述】:

我是 PHP 的新手。我制作了一个消息系统,但您必须使用消息手动更新 iFrame。收到新消息时如何进行此 iFrame 更新?

【问题讨论】:

  • 为什么不使用 AJAX 来获取新消息?
  • 我对 AJAX 不是很熟悉。我怎么能这样做?
  • 无限循环到服务器端...我希望你有一个好的托管包。如果您想从服务器请求中消除很多压力,您可能需要考虑使用 Web 套接字,因为它会发出一个请求,一旦对数据库进行更改,它将回复而不是每隔几秒钟请求一次所有数据.
  • 使用 AJAX,您可以从当前窗口向 PHP(或其他服务器端语言)脚本发出请求并获得响应。您可以在设定的时间间隔内执行此操作,并使用它返回的新消息更新 DOM。这是一个未经测试的示例,code.tutsplus.com/tutorials/…
  • 是的,我有一个免费的托管包 xD 可能想放弃无限循环的想法......

标签: javascript php html iframe instant-messaging


【解决方案1】:

如果您希望在页面加载后定期轮询服务器,则需要使用 javascript 定期向服务器发送请求,而无需重新加载页面(这就是 AJAX 的用途)。

如果您可以创建一个 php 消息来返回在特定时间范围后创建的所有消息,您可以使用 javascript 发送请求。

如果您在客户端使用 jQuery,它看起来像这样(查看http://api.jquery.com/jquery.ajax/ 了解更多详细信息):

var timestamp = Date.now();
setInterval(function() {
  $.ajax("/newmessage?timestamp=" + timestamp, {
    success: function(data) {
      //Do something with the new messages here
      $("#messages").append("<div id='message'>" + data.message + "</div>";
    }
  });
}, 10000);
// Runs interval every 10000 milliseconds

也可以使用纯 javascript,但代码会有些不同。

如果您已经控制了服务器,还有其他的消息传递选项,使用 websockets,它保持连接打开并来回传递消息 (http://www.websocket.org/echo.html)。

【讨论】:

    【解决方案2】:

    谢谢大家!这是我所做的(我从 http://code.tutsplus.com/tutorials/how-to-create-a-simple-web-based-chat-application--net-5931 借来的,由 chris85 建议:

    &lt;script&gt;setInterval(function(){document.getElementById("messages").src += "";}, 2000);&lt;/script&gt;

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-18
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多