您好我将php返回值传递给innerHTML方法,以便在固定的时间间隔内更改div的值。
这是我的代码,我包含了包含该方法的php文件,然后创建包含该方法的类的对象,然后我想将返回值回显给innerHTML函数。但是不起作用。
var t = setInterval(function() {
document.getElementById("content").innerHTML = "\
<? include_once("php/functions.php"); \
$cont = new Content(); \
echo ($cont->getPosts()); \
?>";
}, 1000);
然而,这样可以使php值可以回到innerHTML函数。
var t = setInterval(function() {
document.getElementById("content").innerHTML = "<? echo "Some Text"; ?>";
}, 1000);
<? include_once("php/functions.php"); $cont = new Content(); echo ($cont->getPosts());?>
语句没有错,因为当我把它放在<script>
标签之外时,它会做它需要的东西,但是它不会每隔几秒重新刷新一次
答案 0 :(得分:1)
我怀疑你的意思是“不起作用”是因为它每秒钟只会出现同样的事情。这是因为PHP在浏览器获取任何HTML之前在服务器端运行,这使得代码在到达浏览器时看起来像这样:
var t = setInterval(function(){document. getElementById("content"). innerHTML = "whatever php produced";}, 1000);
这意味着每次间隔触发时,您的浏览器都会将静态文本“无论生成什么内容”放入div中。
要解决此问题,您需要采用略有不同的方法。使用AJAX从PHP脚本请求更新版本,该脚本只返回div内部的内容。如果您不熟悉AJAX,jQuery有一个为您执行此操作的功能。
var t = setInterval( function(){$( '#content' ).load( '/url/to/serverside/script.php' )}, 1000 );
还要注意AJAX是异步的,这意味着静态计时是一个坏主意。相反,你应该使用on-complete函数来触发下一次加载。
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());
?>