javascript - 如何在JQuery中显示动态更新的数据

标签 javascript php jquery html

我试图显示数据库中有多少行。这应该是动态更新的,因此当行数发生变化时,显示的数字也会更新。我尝试用 PHP 打印它,但它不是动态的。

这是索引文件:

  <script>
      $(document).ready(function() {
          setInterval("ajaxcall()",2000);
      });

      function ajaxcall() {
       $.ajax({
       type: "GET",
       url: "count.php"
       success: function(response){
           json_object = JSON.parse(response)
           var count = json_object.count

       // HOW TO DISPLAY COUNT SO IT IS DYNAMIC
       }
       });
       }
       </script>

这是 count.php

$num_rows = mysql_num_rows($result);
echo json_encode($num_rows);

最佳答案

您需要 -

  • 定期进行 ajax 调用来检查更新的值。(这就是您当前正在做的事情。)-- 如果用户要连接很长时间,这通常是一个坏主意。
  • 或者,更好的解决方案是使用 HTML5 web sockets相反。

类似 socket.io 的项目使得在 javascript 服务器(节点)上实现 websockets 变得非常容易。但 PHP 也有一些选择。 -

  • Ratchet - 与socket.io类似,但为PHP构建。
  • Elephant.io - 也是 websockets 的 PHP 实现,但它是一个 ws“客户端”,旨在在服务器上工作。因此,您可能还需要在服务器上部署 node 和 socket.io,并使用elephant.io 驱动它来处理与其他客户端的 websocket 通信。
  • phpsocket.io - “基于 Workerman 的 PHP 中 socket.io 的服务器端替代实现。” - 根据其 github 页面。

phpsocket.io 上没有太多文档,但从自述文件中的示例来看,API 看起来很简单。像这样的东西应该对你有用——

<?
use PHPSocketIO\SocketIO;

// listen port 2021 for socket.io client
$io = new SocketIO(2021);
$io->on('connection', function($socket)use($io){
    $socket->on('get count', function($msg)use($io){
        $num_rows = mysql_num_rows($result);
        $io->emit($num_rows, $msg);
    });
});

在客户端--

var count = 0;
// check if browser supports websockets
if ("WebSocket" in window) {
    var ws = new WebSocket("ws://yourdomain.com:2021/");
    ws.onopen = function() {
        // Web Socket is connected, send data using send()
        ws.send("get count");
    };
    ws.onmessage = function (evt) { 
            var received_msg = evt.data;
            json_object = JSON.parse(response)
            count = json_object.count
            $("#database-results").text(count);
    };
}

*免责声明 - 我之前没有测试过上面的代码或使用过 phpsocket.io 库。所以该代码可能无法工作。此外,Ratchet 看起来是一个更成熟的项目,因此如果您想要为您的应用程序提供更强大的解决方案,您应该进一步研究它。

我从this得到了很多上述信息所以线程。然而,其中的一些信息已经过时了几年,而且那里评价最高的答案并不能提供当今最好的解决方案。

关于javascript - 如何在JQuery中显示动态更新的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38943256/

相关文章:

javascript - 为什么 chrome 后退/前进按钮不触发 popstate 事件?

javascript - 用下格定位上格

javascript - 为什么 focus() 对 div 元素不起作用?

javascript - 如何设置 Karma + Jasmine 以使用 ES6 模块

php - 谁能推荐一个与 MongoDB 兼容的好 PHP ORM?

php - 使用 jquery 验证插件检查数据库中是否存在电子邮件

php - 在轻量级购物网站中数据库相对于 XML 的优势?

jquery - Zurb Foundation Accordion - 不要折叠不活动的片段

javascript - 在一个脚本中创建变量并在另一脚本中使用。 jQuery/HTML/JS

javascript - 如何使整个 'li' 区域和文本成为可点击的链接