0

我只是在 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();
?>
4

1 回答 1

3

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

因此,如果您需要在不重新加载页面的情况下从服务器更新数据,唯一的方法是使用 Ajax 请求,它基本上连接到页面内的服务器并从中获取数据。

更多关于 Ajax:Ajax 基础知识

于 2013-04-17T01:52:10.540 回答