javascript - 每秒刷新一次php代码

标签 javascript php jquery iframe

我在 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,但此代码仅在刷新页面时才有效,如何创建此代码在有人登录后立即刷新的内容?

最佳答案

您需要使用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 秒向服务器发送一次请求可能并不是一件的事情。那么,在这个绝望的时刻,我们该给谁打电话呢? 套接字流。客户端向服务器发送请求。该请求与服务器创建一个不确定的流,服务器知道在收到更新的情况下向客户端发送响应。

进一步阅读:

关于javascript - 每秒刷新一次php代码,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33356986/

相关文章:

javascript - 如何模糊 fabric js 中的对象(不是图像)?

php - 在 "anonymous"用户上存储数据

php - 我如何在 PHP 编码中包含 ajax 以在同一页面中显示数据

jquery - 删除脚本文件不影响程序

jquery - 如何覆盖 jquery 的 .serialize 以包含未选中的复选框

javascript - iOS 链接到独立 Web 应用程序

javascript - 如何用Javascript更改所有外部链接?

javascript - ReactJS 函数与 toFixed 不一致

php - Laravel orderBy 使用 2 个表?

jquery - 制作一个带有滚动条可调整大小的div?