草庐IT

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

coder 2023-10-24 原文

我网站上的聊天系统有问题。它一直在控制台发送 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 无法阻止这些日志的显示,您也不能 :) 您很好。

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

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,看看您的问题是否仍然存在。

一些想法:

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

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

有关php - Ajax 聊天系统每秒在控制台发送 XHR Finished Loading的更多相关文章

  1. Ruby Readline 在向上箭头上使控制台崩溃 - 2

    当我在Rails控制台中按向上或向左箭头时,出现此错误:irb(main):001:0>/Users/me/.rvm/gems/ruby-2.0.0-p247/gems/rb-readline-0.4.2/lib/rbreadline.rb:4269:in`blockin_rl_dispatch_subseq':invalidbytesequenceinUTF-8(ArgumentError)我使用rvm来管理我的ruby​​安装。我正在使用=>ruby-2.0.0-p247[x86_64]我使用bundle来管理我的gem,并且我有rb-readline(0.4.2)(人们推荐的最少

  2. ruby-on-rails - 带 Spring 锁的 Rails 4 控制台 - 2

    我正在使用Ruby2.1.1和Rails4.1.0.rc1。当执行railsc时,它被锁定了。使用Ctrl-C停止,我得到以下错误日志:~/.rvm/gems/ruby-2.1.1/gems/spring-1.1.2/lib/spring/client/run.rb:47:in`gets':Interruptfrom~/.rvm/gems/ruby-2.1.1/gems/spring-1.1.2/lib/spring/client/run.rb:47:in`verify_server_version'from~/.rvm/gems/ruby-2.1.1/gems/spring-1.1.

  3. ruby-on-rails - openshift 上的 rails 控制台 - 2

    我将我的Rails应用程序部署到OpenShift,它运行良好,但我无法在生产服务器上运行“Rails控制台”。它给了我这个错误。我该如何解决这个问题?我尝试更新ruby​​gems,但它也给出了权限被拒绝的错误,我也无法做到。railsc错误:Warning:You'reusingRubygems1.8.24withSpring.UpgradetoatleastRubygems2.1.0andrun`gempristine--all`forbetterstartupperformance./opt/rh/ruby193/root/usr/share/rubygems/rubygems

  4. jquery - 我的 jquery AJAX POST 请求无需发送 Authenticity Token (Rails) - 2

    rails中是否有任何规定允许站点的所有AJAXPOST请求在没有authenticity_token的情况下通过?我有一个调用Controller方法的JqueryPOSTajax调用,但我没有在其中放置任何真实性代码,但调用成功。我的ApplicationController确实有'request_forgery_protection'并且我已经改变了config.action_controller.consider_all_requests_local在我的environments/development.rb中为false我还搜索了我的代码以确保我没有重载ajaxSend来发送

  5. ruby - 使用 Ruby 通过 Outlook 发送消息的最简单方法是什么? - 2

    我的工作要求我为某些测试自动生成电子邮件。我一直在四处寻找,但未能找到可以快速实现的合理解决方案。它需要在outlook而不是其他邮件服务器中,因为我们有一些奇怪的身份验证规则,我们需要保存草稿而不是仅仅发送邮件的选项。显然win32ole可以做到这一点,但我找不到任何相当简单的例子。 最佳答案 假设存储了Outlook凭据并且您设置为自动登录到Outlook,WIN32OLE可以很好地完成此操作:require'win32ole'outlook=WIN32OLE.new('Outlook.Application')message=

  6. 电脑0x0000001A蓝屏错误怎么U盘重装系统教学 - 2

      电脑0x0000001A蓝屏错误怎么U盘重装系统教学分享。有用户电脑开机之后遇到了系统蓝屏的情况。系统蓝屏问题很多时候都是系统bug,只有通过重装系统来进行解决。那么蓝屏问题如何通过U盘重装新系统来解决呢?来看看以下的详细操作方法教学吧。  准备工作:  1、U盘一个(尽量使用8G以上的U盘)。  2、一台正常联网可使用的电脑。  3、ghost或ISO系统镜像文件(Win10系统下载_Win10专业版_windows10正式版下载-系统之家)。  4、在本页面下载U盘启动盘制作工具:系统之家U盘启动工具。  U盘启动盘制作步骤:  注意:制作期间,U盘会被格式化,因此U盘中的重要文件请注

  7. 【鸿蒙应用开发系列】- 获取系统设备信息以及版本API兼容调用方式 - 2

    在应用开发中,有时候我们需要获取系统的设备信息,用于数据上报和行为分析。那在鸿蒙系统中,我们应该怎么去获取设备的系统信息呢,比如说获取手机的系统版本号、手机的制造商、手机型号等数据。1、获取方式这里分为两种情况,一种是设备信息的获取,一种是系统信息的获取。1.1、获取设备信息获取设备信息,鸿蒙的SDK包为我们提供了DeviceInfo类,通过该类的一些静态方法,可以获取设备信息,DeviceInfo类的包路径为:ohos.system.DeviceInfo.具体的方法如下:ModifierandTypeMethodDescriptionstatic StringgetAbiList​()Obt

  8. kvm虚拟机安装centos7基于ubuntu20.04系统 - 2

    需求:要创建虚拟机,就需要给他提供一个虚拟的磁盘,我们就在/opt目录下创建一个10G大小的raw格式的虚拟磁盘CentOS-7-x86_64.raw命令格式:qemu-imgcreate-f磁盘格式磁盘名称磁盘大小qemu-imgcreate-f磁盘格式-o?1.创建磁盘qemu-imgcreate-fraw/opt/CentOS-7-x86_64.raw10G执行效果#ls/opt/CentOS-7-x86_64.raw2.安装虚拟机使用virt-install命令,基于我们提供的系统镜像和虚拟磁盘来创建一个虚拟机,另外在创建虚拟机之前,提前打开vnc客户端,在创建虚拟机的时候,通过vnc

  9. ruby-on-rails - 在 Rails 控制台中使用 asset_path - 2

    在我的Character模型中,我添加了:字符.rbbefore_savedoself.profile_picture_url=asset_path('icon.png')end但是,对于数据库中已存在的所有角色,它们的profile_picture_url为nil。因此,我想进入控制台并遍历所有这些并进行设置。在我试过的控制台中:Character.find_eachdo|c|c.profile_picture_url=asset_path('icon.png')end但这给出了错误:NoMethodError:undefinedmethod`asset_path'formain:O

  10. ruby - 是否可以在不实际发送或读取数据的情况下查明 ruby​​ 套接字是否处于 ESTABLISHED 或 CLOSE_WAIT 状态? - 2

    s=Socket.new(Socket::AF_INET,Socket::SOCK_STREAM,0)s.connect(Socket.pack_sockaddr_in('port','hostname'))ssl=OpenSSL::SSL::SSLSocket.new(s,sslcert)ssl.connect从这里开始,如果ssl连接和底层套接字仍然是ESTABLISHED,或者它是否在默认值7200之后进入CLOSE_WAIT,我想检查一个线程几秒钟甚至更糟的是在实际上不需要.write()或.read()的情况下关闭。是用select()、IO.select()还是其他方法完成

随机推荐