Я подозреваю, что вы подразумеваете под "не работает", это то, что он только выдает то же самое каждую секунду.Это потому, что PHP запускается на стороне сервера ДО того, как браузер получит какой-либо HTML, и это заставляет код выглядеть примерно так, когда он поступает в браузер:
var t = setInterval(function(){document. getElementById("content"). innerHTML = "whatever php produced";}, 1000);
Это означает, что ваш браузер простовставляйте статический текст «что бы ни создавал php» в ваш div каждый раз, когда срабатывает интервал.
Чтобы решить эту проблему, вам потребуется немного другой подход.Используйте AJAX, чтобы запросить обновленную версию из PHP-скрипта, который возвращает только то, что предполагается внутри div.jQuery имеет функцию, которая может сделать это для вас, если вы сами не знакомы с AJAX.
var t = setInterval( function(){$( '#content' ).load( '/url/to/serverside/script.php' )}, 1000 );
Также помните, что AJAX асинхронный, что означает, что статическая синхронизация - плохая идея.Вместо этого вы должны использовать функцию «при завершении» для запуска следующей загрузки.
function loadContent() {
$('#content').load( '/url/to/serverside/script.php', function( r, s, x ) {
setTimeout( loadContent, 1000 );
});
}
loadContent();
Серверный скрипт может быть чем-то похожим на то, что у вас изначально было:
<?
include_once("php/functions.php");
$cont = new Content();
echo ($cont->getPosts());
?>
Ссылка: http://api.jquery.com/load/