我的PHP页面上有一个值,我想用setInterval()
每秒刷新一次。
所以我实际上知道如何用html等刷新值。但是现在我想用php值做同样的事情。这是我的代码:
<script>
setInterval(function()
{
<?php
$urlMachineOnline = 'http://192.168.0.150/awp/Shredder/PLCfiles/MachineOnline.html';
// get content
$contentMachineOnline = file_get_contents($urlMachineOnline);
//remove first 2 characters
$truncateMachineOnline = substr($contentMachineOnline, 2);
//remove last 5 characters
$MachineActivityMS = substr($truncateMachineOnline, 0, -5);
//Set the value to seconds
$MachineActivityS = floor($MachineActivityMS /1000);
$formatMachineActive = 'H:i:s';
$TimeMachineActive = gmdate($formatMachineActive, $MachineActivityS);
?>
},1000);
</script>
Ofc这个没有用,因为JS和php并不是很好。 在我的表格中,我只是简单地说:
<table>
<tr>
<td>Activity:</td>
<td><p id='MachineActivity'></p><?php echo $TimeMachineActive; ?></td>
</tr>
</table>
现在的问题是,当我按f5时,它只会令人耳目一新。但现在我想要autorefresh。我知道setInterval()
为html工作。可以为php代码完成这个吗?
答案 0 :(得分:2)
这应该适合你:
JS代码:
<script>
setInterval(function()
{
$.ajax({
url: 'value-generation.php',
type: 'get',
success: function(response){
$("#MachineActivity").html(response)
},
});
},1000);
</script>
value-generation.php代码:
<?php
$urlMachineOnline = 'http://192.168.0.150/awp/Shredder/PLCfiles/MachineOnline.html';
// get content
$contentMachineOnline = file_get_contents($urlMachineOnline);
//remove first 2 characters
$truncateMachineOnline = substr($contentMachineOnline, 2);
//remove last 5 characters
$MachineActivityMS = substr($truncateMachineOnline, 0, -5);
//Set the value to seconds
$MachineActivityS = floor($MachineActivityMS /1000);
$formatMachineActive = 'H:i:s';
$TimeMachineActive = gmdate($formatMachineActive, $MachineActivityS);
echo $TimeMachineActive;
?>
答案 1 :(得分:1)
这是将php
值转换为javascript
值
<script>
setInterval(function(){
<?php
$urlMachineOnline = 'http://192.168.0.150/awp/Shredder/PLCfiles/MachineOnline.html';
// get content
$contentMachineOnline = file_get_contents($urlMachineOnline);
//remove first 2 characters
$truncateMachineOnline = substr($contentMachineOnline, 2);
//remove last 5 characters
$MachineActivityMS = substr($truncateMachineOnline, 0, -5);
//Set the value to seconds
$MachineActivityS = floor($MachineActivityMS /1000);
$formatMachineActive = 'H:i:s';
$TimeMachineActive = gmdate($formatMachineActive, $MachineActivityS);
?>
var n_val = "<?php echo $TimeMachineActive; ?>";
console.log(n_val);
},1000);
</script>
更改控制台并根据您的需要进行操作。
但是这会使装载时间更长吗?您每秒呼叫一个远程页面并检查?
答案 2 :(得分:0)
刷新时,PHP会再次返回整个页面,并且无法刷新页面的某些部分。因此,如果您只想刷新页面的一部分,则需要使用iframe。
<body>
<h1>This is my main PHP page</h1>
<iframe src="[url-to-another-php-page-with-only-the-timer]"></iframe>
</body>
然后你将不得不用一个单独的php页面只用定时器值,并用一个元标记提供html - 这个元标记将进行刷新。此票证中详细列出了元标记:PHP - auto refreshing page
答案 3 :(得分:0)
您需要定义setInterval函数。
function setInterval($f, $milliseconds)
{
$seconds=(int)$milliseconds/1000;
while(true)
{
$f();
sleep($seconds);
}
}
现在调用你的设置间隔函数,它应该可以正常工作。
答案 4 :(得分:0)
如您所知,PHP文件将使服务器在调用其URI时生成页面。 您使用脚本的方式不会使服务器“重新生成”页面并更新值。
假设这样,您可以:
外化你的setInterval函数中的php代码(例如:update_time_machine.php)
召回外部化的PHP资源(使用IFrame或请求)
使用PHP脚本输出通过Jquery / JAVASCRIPT更新您的页面。
编辑:Mihali的回答听起来最干净。
答案 5 :(得分:0)
我确定这对您有用
<script>
setTimeout(function(){
location.reload();
},1000); // 1000 milliseconds means 1 seconds.
</script>