Ajax Chat System每秒在控制台中发送XHR Finished Loading

时间:2016-05-07 01:10:51

标签: php html mysql ajax

我的网站上的聊天系统有问题。它不断在控制台中发送XHR Finished加载。我知道我可以在chrome中禁用它,但使用该站点的其他用户不需要经历该过程。它会像你在setinterval中看到的那样每隔一秒发送一条消息,我希望它只在数据库中的某些内容被添加/删除/更改时发送它

我在这里链接我的js:

function ajax() {
  var req = new XMLHttpRequest();

  req.onreadystatechange = function() {
    if(req.readyState == 4 && req.status == 200) {
      document.getElementById('chatbox').innerHTML =  req.responseText;
    }
  }

  req.open('GET', 'includes/chatbox.php', true);
  req.send();
}
setInterval(function(){ajax()},1000);

这应该是唯一需要编辑的内容,但如果您需要查看php代码或HTML代码,请告诉我。

1 个答案:

答案 0 :(得分:1)

更新:Interwebs建议人们看到XHR Finished loading只是您和那些正在记录ajax请求的人。取消选中控制台上下文菜单中的Log XMLHttpRequestsSee here。别担心;它不会影响用户的用户体验默认情况下禁用ajax请求的日志记录,因此99%的用户无法实际登录,默认情况下隐藏控制台而且即使在20世纪90年代的奔腾机器上,console.log的成本也是微不足道的。

即使你不同意,实际上你所能做的就是担心;如果Facebook无法阻止这些日志显示,你也不能:)你很好。 Facebook's XHR Finished loadings

不确定你的意思,但试试这个;也许它会让你的问题更加明显,你可以提出更好的要求:

<强> server.php

<?php
header("Access-Control-Allow-Origin: *");
echo "hi!";

<强> client.html

<!DOCTYPE html>
<html>
    <head>
        <title></title>
    </head>
    <body>
        <div id='chatbox'></div>
        <script>
            function ajax() {
              var req = new XMLHttpRequest();

              req.onreadystatechange = function() {
                if(req.readyState == 4 && req.status == 200) {
                  document.getElementById('chatbox').innerHTML = req.responseText;
                }
              }

              req.open('GET', 'http://localhost:1234/', true);
              req.send();
            }
            setInterval(function(){ajax()},1000);
        </script>
    </body>
</html>

使用

运行服务器
php -S localhost:1234 server.php

在您的浏览器上打开client.html,看看您的问题是否仍然存在。

Not showing anything on the Chrome console pane

一些想法:

  • 当你说&#34;它一直在控制台发送XHR已完成加载时,你的意思是&#34;在网络选项卡中&#34;?如果是这样,那么你无能为力;如果你每秒发送一个请求,它会每秒出现一次。
  • 客户端(html代码)不知道数据库状态的变化,这就是你每秒轮询的原因。相反,如果您希望服务器端(php代码)告诉您何时更改DB状态,则需要使用某种形式的WebSockets。 PHP不是理想的,但您可以尝试Ratchet
  • 之类的东西