2013-07-14 52 views
0

當我的頁面第一次打開時,調用包含此代碼的函數,並且它按照預期工作。在後臺,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)]; 
} 

} 
+1

您是否正在從Javascript代碼(setInterval)調用PHP函數?它不能簡單地工作。 PHP在服務器上執行,在客戶端上執行JS。你能給你的Javascript代碼包括setInterval調用嗎? –

+0

我更新了我的代碼。 PHP代碼正在JavaScript函數中調用。 – user2581157

+0

您不能從Javascript代碼調用readData,因爲它不是Javascript函數。如果您需要這樣的行爲,請了解AJAX(請參閱下面的user1759572答案)。 –

回答

0

您需要使用AJAX從服務器獲取數據。 如果您使用的是jQuery javascript庫檢查JQuery ajax

+0

...如果你沒有,W3Schools的教程解釋Ajax沒有jQuery(原生Javascript):www.w3schools.com/ajax/ –