php - 将内容插入数据库时​​自动刷新 div 标签

标签 php ajax database

我创建了一个从数据库 names 中选择的 PHP 页面,并创建了包含 Javascript 代码的 html 页面,以每 5 秒自动从 php 页面刷新一个 div 标签,这里是代码

<script>
function Ajax(){
var xmlHttp;
    try{    
        xmlHttp=new XMLHttpRequest();// Firefox, Opera 8.0+, Safari
    }
    catch (e){
        try{
            xmlHttp=new ActiveXObject("Msxml2.XMLHTTP"); // Internet Explorer
        }
        catch (e){
            try{
                xmlHttp=new ActiveXObject("Microsoft.XMLHTTP");
            }
            catch (e){
                alert("No AJAX!?");
                return false;
            }
        }
    }

xmlHttp.onreadystatechange=function(){
    if(xmlHttp.readyState==4){
        document.getElementById('ReloadThis').innerHTML=xmlHttp.responseText;
        setTimeout('Ajax()',1);
    }
}
xmlHttp.open("GET","select.php",true);
xmlHttp.send(null);
}

window.onload=function(){
   setTimeout('Ajax()',2000);
}
</script>
<div id="ReloadThis"></div>

这太棒了,但只有在数据库中插入新内容时我才需要刷新。 那么有没有办法做到这一点?

最佳答案

我认为可以实现的一种方法是通过推送通知。这样您就可以保持与数据库的事件连接,这会告诉您何时进行了修改。

这也称为“长轮询”或“ cometd 编程”。 (查看此资源:comet programming)。我个人没有使用过这项技术,所以我不知道它的局限性(我听说过浏览器支持方面的问题)。

不过我想这样做的一种肮脏方式是:

  1. 当您在数据库中存储新值时,还会使用 json 值(或您希望的任何值)更新页面,比如说一个唯一的 ID 号

  2. 每隔 X 秒使用您的 ajax 并检查该页面上 ID 的值,如果有新的则更新您的值,如果不是就休眠。

这可以工作,但它会定期检查,而不是在发生更改时检查。

关于php - 将内容插入数据库时​​自动刷新 div 标签,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17786457/

相关文章:

php - session_start() 使服务器运行完整的执行时间,然后返回数据

php - 使 PHP 的 mail() 异步

php - 同一基于 SQL/PHP 的图表上的多个输出

javascript - 当所有产品加载完毕后使用 Deferred

mysql - 百表数据库设计

javascript - 如何使用 javascript 使用来自 php 函数的数组元素填充 <div> 元素?

javascript - 如何在getcontenttools库中通过jquery发送ajax

ajax - 在 AJAX 表单加载的文本区域中使用 "Updated WMD Editor"

database - Flutter Firebase数据库 “The method ' forEach'被调用为null。”

mysql - MySQL Workbench 中的外键不起作用?