當我的頁面第一次打開時,調用包含此代碼的函數,並且它按照預期工作。在後臺,displaydata.txt
每500ms更新一次(用PHP的fopen(..., "w")
打開並完全重寫)。當再次調用包含此代碼的功能時(來自setInterval(...)
),頁面將不會使用displaydata.txt
中的新數據以及第一次加載頁面時的舊數據進行更新。Javascript/PHP:從已更新文件獲取更新數據
數據文件被成功更新。當頁面刷新時,顯示新的數據。
var interval2=setInterval(function(){readData()},500); //Updates table data every half second
function readData() {
//Read data from a text file into a php array
<?php
$fileName = "/var/www/displaydata.txt";
$phpArray = file_get_contents($fileName); //Read entire file into string
$phpArray = explode("```",$phpArray); //Break up the array into pieces divided by "```"
$tempArray = json_encode($phpArray); //Prepare the php array to be converted to javascript
echo "var jsArray = " . $tempArray . ";\n"; //Convert to javascript array
?>
//Fill table based on text file.
for (var i = 0; i < (jsArray.length - 1); i+=2)
{
document.getElementById(jsArray[i]).value = jsArray[(i + 1)];
}
}
您是否正在從Javascript代碼(setInterval)調用PHP函數?它不能簡單地工作。 PHP在服務器上執行,在客戶端上執行JS。你能給你的Javascript代碼包括setInterval調用嗎? –
我更新了我的代碼。 PHP代碼正在JavaScript函數中調用。 – user2581157
您不能從Javascript代碼調用readData,因爲它不是Javascript函數。如果您需要這樣的行爲,請了解AJAX(請參閱下面的user1759572答案)。 –