Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/442.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/xml/13.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
Javascript XMLHttpRequest仅在检测到数据库更改时刷新_Javascript_Xml_Xmlhttprequest - Fatal编程技术网

Javascript XMLHttpRequest仅在检测到数据库更改时刷新

Javascript XMLHttpRequest仅在检测到数据库更改时刷新,javascript,xml,xmlhttprequest,Javascript,Xml,Xmlhttprequest,所以基本上,我的ajax函数一直在刷新,我希望它在检测到数据库发生更改时刷新。有没有办法做到这一点?多谢各位 我的代码: function ajax(){ var req = new XMLHttpRequest(); req.onreadystatechange = function(){ if (req.readyState == XMLHttpRequest.DONE && req.status == 200) {

所以基本上,我的ajax函数一直在刷新,我希望它在检测到数据库发生更改时刷新。有没有办法做到这一点?多谢各位

我的代码:

function ajax(){
    var req = new XMLHttpRequest();
    req.onreadystatechange = function(){
        if (req.readyState == XMLHttpRequest.DONE && req.status == 200) {
                document.getElementById('chat').innerHTML = req.responseText;
        }
    }
    req.open('GET', 'chat.php', true);
    req.send();
    return false;

}

setInterval(function(){ajax();}, 100);

如果希望进行服务器推送,可以使用或,而不是使用XMLHttpRequest从客户端进行轮询

您必须在服务器端检测数据库中的更改,然后使用SSE或websocket将更改推送到网页上,或者只发送一个标记表示已发生更改,然后使用XHR从网页中提取更改,就像您现在所做的那样


我对您的设置不太了解,无法制作代码示例,但interwebs上有很多示例,展示了如何使用SSE或websocket来实现这一点。

仅使用ajax不。请考虑使用websocket或服务器事件API