PHP代码只在javascript setInterval中运行一次


PHP code only runs once inside javascript setInterval

我只是在一个JC类学习PHP和Javascript。我为学校的一个项目准备了以下材料。下面的setInterval()每3秒运行一次,但是嵌入的PHP代码只运行第一次。

newVal第一次更新,但在接下来的迭代中不改变它的值。脚本永远不会返回到服务器来查找值是否更改。

 setInterval(function () {
    var newVal, mem;
    <?php $telnet = new PHPTelnet();?>;
    <?php $result = $telnet->Connect('ip_address','username','password');?>;
    <?php   $telnet->DoCommand('show process memory summary"', $result);?>;
    <?php $result = preg_replace('/['r'n ]+/',' ', trim($result)); ?>;
    newVal = "<?php echo substr($result,61,7) ?>"; 
    newVal = newVal / 10000;
    mem.update(newVal);
  }, 3000);

感谢下面的一些回答/评论,我是这样做的:
Javascript

     setInterval(function () {
        $.get("memAccess.php", function(return_value) {
                mem.update(parseFloat(return_value));
        });
    }, 3000);

单独的PHP文件

<?php
    $telnet = new PHPTelnet();
    $result = $telnet->Connect('ip_address','username','password');
    $telnet->DoCommand('show process memory summary', $result);
    $result = preg_replace('/['r'n ]+/',' ', trim($result));
    $result = substr($result,61,7);
    echo $result; 
    $telnet->Disconnect();
    exit();
?>

基本上当你在javascript中编写php代码时,它总是在页面加载时运行一次。在此之后,您只需向浏览器编写php代码,这根本无法理解(php在服务器上处理,输出是浏览器可以解释的Html, Css和Javascript)

所以,如果你需要从服务器更新数据而不重新加载页面,唯一的方法就是使用Ajax请求,它基本上连接到页面内的服务器并从中获取数据。

关于Ajax的更多信息:Ajax基础