我有两个PHP脚本。一个用作后端,并包含一个类定义,其中包含一些功能,用于显示计算机的平均负载和RAM使用情况。另一个用作前端,它调用这些函数并将它们与一些HTML和CSS一起打印,以使它看起来很好。这工作正常,但它不会自动更新,除非刷新页面。PHP JSON返回两个不同函数的一个响应
我做后端能够一次返回一个函数的JSON表,使用下面的代码:
<?php
if (!empty ($_GET['q']))
{
$status = new status();
$query = $_GET['q'];
$data = $status->$query();
exit (json_encode($data));
}
?>
我收到使用JavaScript的数据,像这样:(我没有使用任何框架)
function update_load()
{
var prefix = "Load average: ";
xmlhttp = new XMLHttpRequest();
xmlhttp.onreadystatechange = function()
{
if (xmlhttp.readyState == 4 && xmlhttp.status == 200)
{
var json = JSON.parse(xmlhttp.responseText);
document.getElementById("loadavg").innerHTML = prefix + json.load;
}
}
xmlhttp.open("GET", "./backend.php?q=load", true);
xmlhttp.send();
setTimeout ("update_load()", 10000);
}
JSON响应页面给出了有效:
{"model":"Intel Xeon 5150 @ 2.66GHz","load":"0.00 0.02 0.05"}
我有一个其他功能update_ram()
几乎相同,并在同一时间运行。这两个函数都在页面加载时运行,并且通常在第一次运行时正常工作。有时候,其中一个(通常是平均负载)将停止工作,而是显示“未定义”,并且不会再次自我更新。我在这两个函数中都放入了一个alert (xmlhttp.response)
,后台脚本看起来好像它正在将update_ram()
的表发送给这两个函数。
我试着在页面加载时延迟了一秒钟的功能,所以现在这个问题发生的频率较低,但仍然会发生。我想我可以让它一次返回我想要的功能,但是它会失去一些可重用性。什么可能导致这一点,以及可以采取哪些措施来解决这个问题?
或者,有没有完全不同的方式我应该这样做?
当然。我不能相信我忽略了这一点。谢谢 – ZeroUptime