【问题标题】:PHP code only runs once inside javascript setIntervalPHP 代码只在 javascript setInterval 中运行一次
【发布时间】:2013-04-19 03:07:28
【问题描述】:

我只是在 JC 课程中学习 PHP 和 Javascript。我有以下学校项目。以下setInterval() 每 3 秒运行一次,但嵌入的 PHP 代码只运行第一次。

newVal 第一次得到更新,但在接下来的迭代中不会改变它的值。该脚本从不通过 telnet 回到服务器以查找值是否更改。

 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);

感谢下面的一些答案/cmets,这就是我为使其工作所做的工作:

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();
?>

【问题讨论】:

  • 了解PHP的页面生命周期。
  • 你不能这样做;分离进程并使用AJAX从客户端调用它。
  • 这里提示 PHP 在服务器端运行,JavaScript 在客户端运行
  • 我会尝试这样做: 1- 将所有 php 代码放入新文件中。 2- 在 setInterval 函数中使用 Ajax POST,将数据传递到 php 文件并恢复您想要发布的信息

标签: php javascript setinterval


【解决方案1】:

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

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

关于 Ajax 的更多信息:Ajax Basics

【讨论】:

  • 谢谢雅科夫。这比我的教授解释得更好。这甚至没有出现。
猜你喜欢
  • 2012-04-01
  • 1970-01-01
  • 2013-01-08
  • 1970-01-01
  • 2013-11-13
  • 1970-01-01
  • 1970-01-01
  • 2011-06-27
  • 1970-01-01
相关资源
最近更新 更多