我有兩個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