【问题标题】:Refresh page from another (page)从另一个(页面)刷新页面
【发布时间】:2019-04-12 16:05:10
【问题描述】:

我正在处理一个包含 2 个独立页面的项目:每个页面都显示在不同的计算机上。我希望每次单击第一页上的按钮时,它都会刷新第二页。 我该如何继续?

我已经尝试在每次单击按钮时在数据库中存储一个数字 (1)。在第二页中,如果数字为 1,则将其清除为 0,然后刷新。 (PHP、jQuery)。

我认为 AJAX 存在答案,但我不知道如何实现。

这是我的第二页(我想刷新)

<script type="text/javascript">
    setInterval("my_function();",10000); 

    function my_function()
    {
        $('.refresh').load(location.href + ' .refresh');
    }
</script>

    <div class="refresh">
        <?php 
            require("database.php");    
            $db = Database::connect();

            $statement = $db->query("SELECT * from refresh");
            $item = $statement->fetch();

            if ($item["value"] =="1")
            {                                   
                $newval = "0";
                $statement = $db->prepare("UPDATE refresh SET value=?");
                $statement->execute(array($newval));
                Database::disconnect();
                header("location: page2.php");
            }
        ?>  
    </div>

【问题讨论】:

    标签: javascript php jquery html ajax


    【解决方案1】:

    我认为最好的方法之一是使用实时数据库,它实时同步到每个连接的客户端,您的页面会自动接收最新数据的更新。

    这样你可以有两个单独的页面,在两个不同的选项卡(或计算机)中打开,在其中一个页面中,你将更新第二页中的一些数据,它会自动更新和生效。

    我个人喜欢Firebase 实时数据库,并且对于您计划使用的每个平台都有很好的文档。

    【讨论】:

    • 非常感谢,我用一些示例尝试了 firebase,结果非常棒。我想我会将我所有的 Db 迁移到 Firebase。目前,我正在尝试理解无 SQL 的构造,这并不容易。
    【解决方案2】:

    在 setInterval 上调用您的后端可能非常繁重。 WebSockets 就是用来解决这些问题的。您可以使用 WebSockets 以非常轻量级的方式实现您想要的。

    这个用例的实现可能是(对于浏览器):

    var socket = io()
    
    // Send refresh command
    document.getElementByd('my-button').addEventListener('click', function () {
      socket.emit('refresh', '')
    })
    
    // Refresh when command comes
    socket.on('refresh', function() {
      location.reload()
    });
    

    您还需要在后端设置 SocketIO 才能完成所有这些工作。结帐:http://socketo.me/docs/http

    【讨论】:

    • 感谢您的回答,但是此解决方案是否适用于 2 台不同的计算机?
    • 是的。因此,每当您向套接字发出信号时,它都会进入后端,并从后端通知所有活动的浏览器会话。
    猜你喜欢
    • 1970-01-01
    • 2014-10-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-11
    • 2015-04-17
    • 1970-01-01
    • 2015-06-19
    相关资源
    最近更新 更多