gpt4 book ai didi

php - Ajax 聊天系统每秒在控制台发送 XHR Finished Loading

转载 作者:可可西里 更新时间:2023-11-01 08:39:50 25 4
gpt4 key购买 nike

我网站上的聊天系统有问题。它一直在控制台发送 XHR Finished loading。我知道我可以在 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 代码,请告诉我。

最佳答案

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

即使你不同意,其实你能做的也只是担心;如果 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

一些想法:

  • 当您说“它不断发送 XHR 在控制台中完成加载”时,您是指“在网络选项卡中”吗?如果是这样,您将无能为力;如果你每秒发送一个请求,它就会每秒出现一次。
  • 客户端(html 代码)不知道数据库状态的变化,所以这就是您每秒轮询的原因。相反,如果您希望服务器端(php 代码)在数据库状态更改时告诉您,则需要使用某种形式的 WebSockets。 . PHP 对此并不理想,但您可以尝试类似 Ratchet 的方法.

关于php - Ajax 聊天系统每秒在控制台发送 XHR Finished Loading,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37083449/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com