Я просто изучаю PHP и Javascript в классе JC. У меня есть следующий школьный проект. Следующий 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(); ?>
В основном, когда вы пишете PHP-код внутри javascript, он всегда запускается один раз, когда страница загружается. После этого вы просто пишете php-код в браузере, который просто не понимает (Php обрабатывается на сервере, а на выходе – HTML, Css и Javascript, которые браузер может интерпретировать)
Таким образом, если вам нужно обновить данные с сервера без перезагрузки страницы, единственный способ сделать это – с помощью запросов Ajax, которые в основном подключаются к серверу на странице и получают данные из него.
подробнее об Ajax: Основы Ajax