Javascript 尝试从Minecraft服务器刷新ping信息-可能还是不可能?
我正在制作一个(类似于)管理Minecraft服务器的仪表板。我目前正在尝试的是打印有多少玩家在线(在所有服务器上),并每3秒刷新一次值 什么有效-显示玩家总数-仅一次;刷新(使用jQuery)相应的div也可以工作(调试测试)。 什么不起作用-当刷新(使用jQuery)和打印PHP函数的值时,它不会刷新函数本身(只是反复打印相同的内容)。 注意:我没有从客户端和服务器控制台得到任何错误 代码如下: PHP-获取服务器上的玩家数量:Javascript 尝试从Minecraft服务器刷新ping信息-可能还是不可能?,javascript,php,jquery,html,Javascript,Php,Jquery,Html,我正在制作一个(类似于)管理Minecraft服务器的仪表板。我目前正在尝试的是打印有多少玩家在线(在所有服务器上),并每3秒刷新一次值 什么有效-显示玩家总数-仅一次;刷新(使用jQuery)相应的div也可以工作(调试测试)。 什么不起作用-当刷新(使用jQuery)和打印PHP函数的值时,它不会刷新函数本身(只是反复打印相同的内容)。 注意:我没有从客户端和服务器控制台得到任何错误 代码如下: PHP-获取服务器上的玩家数量: function getPlayersTotal() {
function getPlayersTotal() {
$total = 0;
foreach (getServers() as $serverInfo) {
if (isOnline($serverInfo)) {
$ping = json_decode(file_get_contents('http://api.minetools.eu/ping/' . $serverInfo), true);
$total += intval($ping['players']['online']);
}
}
return $total;
}
JS-刷新-位于头部
<script>
$(document).ready(
function() {
setInterval(function() {
var players = <?php print "" . getPlayersTotal() ?>;
$('#playersPLZ').text(
"" + players);
}, 3000);
});
</script>
$(文件)。准备好了吗(
函数(){
setInterval(函数(){
var玩家=;
$('#playersPLZ')。文本(
“+玩家);
}, 3000);
});
有人能向我解释一下(1.)是否有可能以某种方式刷新PHP函数的值,以及(2.)如何做到这一点吗
问候。这是Ajax的工作。现在的情况是:PHP代码将玩家数量直接输出到发送到浏览器的JavaScript中。如果玩家数量为50,则浏览器会看到以下内容:
<script>
$(document).ready(
function() {
setInterval(function() {
var players = 50;
$('#playersPLZ').text(
"" + players);
}, 3000);
});
</script>
然后,您的JavaScript可以是这样的:
<script>
$(document).ready(function() {
setInterval(function() {
$.get("num-players.php", function(players) {
$("#playersPLZ").text(players);
});
}, 3000);
});
</script>
$(文档).ready(函数(){
setInterval(函数(){
$.get(“num players.php”,函数(players){
$(“#playersPLZ”).text(播放器);
});
}, 3000);
});
这将每隔3秒向服务器发送一个请求,请求输入新号码。
num players.php
中的代码将返回该数字,当请求完成时,您的元素将用该数字更新。您将客户端代码与服务器端代码(JS与php)混为一谈。您的目标是每3秒对服务器进行一次AJAX调用,您所做的是每3秒调用相同的值(请在浏览器中查看生成的HTML文件…),你可以找到更多信息。
<script>
$(document).ready(function() {
setInterval(function() {
$.get("num-players.php", function(players) {
$("#playersPLZ").text(players);
});
}, 3000);
});
</script>