我正在尝试显示数据库中有多少行。这应该动态更新,因此当行数更改时,显示的数字也会更新。我尝试用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);
答案 0 :(得分:3)
您需要 -
像socket.io这样的项目可以很容易地在javascript服务器(节点)上实现websockets。但PHP也有一些选择。 -
关于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得到了很多上述信息。然而,有些信息已经过时了几年,最高评价的答案并没有为今天提供最好的解决方案。
答案 1 :(得分:2)
您可以使用count
响应中的AJAX
变量更新DOM元素。
如下所示:
<span id="database-results">
</span>
然后在您的AJAX成功通话中,将count
变量附加到HTML
元素:
success: function(response) {
json_object = JSON.parse(response)
var count = json_object.count
$("#database-results").text(count);
}
作为补充说明,您将每隔2秒使用AJAX请求向服务器发送垃圾邮件,具体取决于您的用户群,这可能需要考虑。