gpt4 book ai didi

javascript - 使用 JavaScript 实时更新网页元素时出错

转载 作者:行者123 更新时间:2023-12-03 09:15:55 25 4
gpt4 key购买 nike

我正在开发一个网页,该网页显示我正在运行的游戏服务器上的在线玩家数量,该数量是实时更新的。问题是,我可以显示游戏服务器中在线玩家的数量,但它永远不会更新,并且始终显示页面加载时服务器上的玩家数量,尽管每秒都有人离开并加入服务器。

这是显示数字的 PHP 代码(很简单,仅用于测试):

<?php
echo "<a id='a1' href='#' class='online'>Loading...</a>";
?>

我正在做的是使用 javascript 每秒更新“a1”新数量的在线玩家,该函数调用名为 getplayers() 的 PHP 函数:

<script language="JavaScript">
setInterval(function(){
document.getElementById("a1").innerHTML = '<?php echo getplayers()?>';
}, 1000);
</script>

函数 getplayers() 正是这样:

<?php
include "Status.php";
function getplayers() {
$serverb = new Status("mc.spainpvp.com", '25565');
return $serverb->online_players;
}
?>

最后,Status.php 是一个脚本,可以获取在线玩家数量以及有关服务器的更多信息,我确信它可以工作:

<html>
<?php

class Status {

public $server;
public $online, $motd, $online_players, $max_players;
public $error = "OK";
function __construct($url, $port = '25565') {
$this->server = array(
"url" => $url,
"port" => $port
);
if ( $sock = @stream_socket_client('tcp://'.$url.':'.$port, $errno, $errstr, 1) ) {
$this->online = true;
fwrite($sock, "\xfe");
$h = fread($sock, 2048);
$h = str_replace("\x00", '', $h);
$h = substr($h, 2);
$data = explode("\xa7", $h);
unset($h);
fclose($sock);
if (sizeof($data) == 3) {
$this->motd = $data[0];
$this->online_players = (int) $data[1];
$this->max_players = (int) $data[2];
}
else {
$this->error = "Cannot retrieve server info.";
}
}
else {
$this->online = false;
$this->error = "Cannot connect to server.";
}
}
}
?>
</html>

所以我的问题是,是否有人知道为什么它总是更新第一个玩家数量而不是输入新的玩家数量?

最佳答案

您不能通过 Javascript 调用 PHP 函数。 PHP 在请求时在服务器上进行处理。响应中不会显示任何 PHP 代码,因为它已经被处理了。

所以你的 JavaScript 代码实际上看起来像:

<script language="JavaScript">
setInterval(function(){
document.getElementById("a1").innerHTML = 'XXXXX';
}, 1000);
</script>

其中 XXXXX 是请求时的玩家数量。因此,您的代码每秒都会将元素 insideHTML 替换为静态内容。

如果你想每秒获得新的玩家数量,你需要使用 Ajax。您可以使用 XMLHttpRequest 自行创建请求,也可以使用一些库,例如 jQuery 及其 $.ajax 方法。您还需要服务器上有一个 PHP 代码来提供此类信息。

关于javascript - 使用 JavaScript 实时更新网页元素时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31951385/

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