【问题标题】:Refresh php code every second每秒刷新 php 代码
【发布时间】:2015-10-26 22:50:16
【问题描述】:

我在 iframe 中有一个可见的登录屏幕,当有人在 iframe 上登录时,主页上应该会弹出一个菜单按钮。

这是我现在拥有的代码:

<?php   if (isset($player)){
                        echo'
            <ul class="nav-header pull-right">
                <li>
                    <div class="btn-group">
                        <button class="btn btn-default btn-image dropdown-toggle" data-toggle="dropdown" type="button">
                            <img src="assets/img/avatars/avatar10.jpg" alt="Avatar">
                            <span class="caret"></span>
                        </button>
                        <ul class="dropdown-menu dropdown-menu-right">
                            <li class="dropdown-header">Profile</li>
                            <li>
                                <a tabindex="-1" href="base_pages_profile.html">
                                    <i class="si si-user pull-right"></i>
                                    <span class="badge badge-success pull-right"></span>Profile
                                </a>
                            </li>
                            <li>
                                <a tabindex="-1" href="javascript:void(0)">
                                    <i class="si si-settings pull-right"></i>Settings
                                </a>
                            </li>
                            <li class="divider"></li>
                            <li class="dropdown-header">Actions</li>
                            <li>
                                <a tabindex="-1" href="logout.php">
                                    <i class="si si-logout pull-right"></i>Log out
                                </a>
                            </li>
                        </ul>
                    </div>
                </li>
            </ul>'; } ?>

isset($player) 在有人登录后立即变为 true,但此代码仅在您刷新页面时才有效,如何创建有人登录后此代码会立即刷新的内容?

【问题讨论】:

  • 为什么登录框放在 iframe 中?除非有特殊需要,否则我建议将其呈现为页面的一部分而不是 iframe。这样,当登录被提交时,页面就会更新。

标签: javascript php jquery iframe


【解决方案1】:

您需要使用 AJAX;使用通常称为Short Polling 的技术。您可以做的是,使用setInterval,您可以每秒触发一个 AJAX 请求并获取新代码。每一秒对于服务器来说都太长了,所以也要注意它:

setInterval(function () {
  $("#divId").load("/path/to/php/response.php");
}, 1000);

1000 是一秒,因为它以毫秒为单位。

另一种技术是向服务器发送一个请求,这将创建一个在一段时间内保持打开状态的请求。如果在此间隔期间收到更新,则将响应发送到客户端,否则终止连接。这种技术称为Long Polling。在代码中它看起来像:

(function poll() {
   setTimeout(function() {
     $.ajax({ url: "server", success: function(data) {
        sales.setValue(data.value);
     }, dataType: "json", complete: poll });
   }, 30000);
})();

但是,有时,每 10 秒向服务器发送一次请求可能不是一件的事情。那么,在这些绝望的时刻,我们该给谁打电话呢? 套接字流。客户端向服务器发送请求。该请求与知道在收到更新的情况下向客户端发送响应的服务器创建一个不确定的流。

进一步阅读:

【讨论】:

  • 好的,我会试试这个,这是我可以复制到我的 html 中的确切代码吗?我以前从未使用过 ajax。
  • 嗯,这不是确切代码。请使用您要加载 PHP 代码的元素的真实id。此外,要加载的 URL 应该更改。
猜你喜欢
  • 2013-05-02
  • 1970-01-01
  • 1970-01-01
  • 2013-09-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2011-12-06
相关资源
最近更新 更多