Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/jquery/73.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 如何在每个打开网页的浏览器中更新网页?_Php_Jquery_Ajax - Fatal编程技术网

Php 如何在每个打开网页的浏览器中更新网页?

Php 如何在每个打开网页的浏览器中更新网页?,php,jquery,ajax,Php,Jquery,Ajax,下面是一个场景:我有两个运行的浏览器Firefox和Chrome,我的page index.php在这两个浏览器上都是打开的。现在在Chrome中,我在下面的代码中输入一些值,然后用鼠标点击Send按钮,divresults的内容在我使用的浏览器中使用AJAX进行更改:Chrome,我们知道firefox中不会发生任何事情firefox中divresults的内容不会更改,但我正在寻找一种方法来做到这一点!我应该怎么做才能使我的代码在所有打开我的页面的浏览器中显示新内容,而不让用户刷新页面以查看

下面是一个场景:我有两个运行的浏览器Firefox和Chrome,我的page index.php在这两个浏览器上都是打开的。现在在Chrome中,我在下面的代码中输入一些值,然后用鼠标点击Send按钮,divresults的内容在我使用的浏览器中使用AJAX进行更改:Chrome,我们知道firefox中不会发生任何事情firefox中divresults的内容不会更改,但我正在寻找一种方法来做到这一点!我应该怎么做才能使我的代码在所有打开我的页面的浏览器中显示新内容,而不让用户刷新页面以查看新内容

index.php:

process.php:


非常感谢您。

我认为最好的方法是每X秒调用一次PHP服务器代码,并验证是否有更改:

JavaScript代码:

<script>
    var updateHtml = function() {
        $.post(
            "process.php", 
            { name: $("#name").val(), age: $("#age").val() }, 
            function(data) {
                if(data.updated) { // if any change
                    $("#results").html(data.html);
                }
            },
            'json'
        );
    };


    $(document).ready(function() {
        $("#send").on("click", updateHtml);

        setInterval(updateHtml, 15000); // update page block every 15 s if any change
    });
</script>
process.php

    <?php
if($_SERVER["REQUEST_METHOD"] == "POST") { 
    if(updated) { // write here your condition that says if there is any change
        echo json_encode(array(
                'updated' => true,
                'html' => '<div id="res">' . $_POST['name']. ' And ' . $_POST['age'] . '</div>';
        ));
    } else {
        echo json_encode(array('updated' => false));
    }
} ?>

我希望这有帮助

结帐。。。这就是方法。@Arash Naderi您可以进行ajax调用,而不是刷新页面。此调用可以每五秒钟进行一次,也可以根据需要进行一次。您可以将WebSocket与所有客户端连接并从中获取数据的服务器一起使用,或者将数据保存在服务器数据库、文件中的某个位置。。。并每隔X秒发出ajax请求以同步客户端。无论哪种方式,您都需要一台服务器在客户端之间共享信息。@Claudio Bredfeldt:谢谢@Aleix:我认为这两种方法,特别是每X秒发出一个AJAX请求,都不是安全的方法,因为不兼容和运行时。但事实证明,我别无选择。非常感谢你,投票费用太高了。使用WebSocket并推动更改会更好。是的,会更好。但是Websocket还不是一种可以用于严肃项目的非常强大的技术。再加上第三方软件的安装以及与所有使用过的浏览器的不兼容性。谢谢Nabil,尽管使用了额外的资源和带宽,我想我还是同意你的建议。再次感谢。
<script>
    var updateHtml = function() {
        $.post(
            "process.php", 
            { name: $("#name").val(), age: $("#age").val() }, 
            function(data) {
                if(data.updated) { // if any change
                    $("#results").html(data.html);
                }
            },
            'json'
        );
    };


    $(document).ready(function() {
        $("#send").on("click", updateHtml);

        setInterval(updateHtml, 15000); // update page block every 15 s if any change
    });
</script>
    <?php
if($_SERVER["REQUEST_METHOD"] == "POST") { 
    if(updated) { // write here your condition that says if there is any change
        echo json_encode(array(
                'updated' => true,
                'html' => '<div id="res">' . $_POST['name']. ' And ' . $_POST['age'] . '</div>';
        ));
    } else {
        echo json_encode(array('updated' => false));
    }
} ?>