PHP将值返回div值

时间:2012-03-22 22:32:08

标签: php javascript echo innerhtml setinterval

您好我将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>标签之外时,它会做它需要的东西,但是它不会每隔几秒重新刷新一次

提前谢谢 我试图让问题尽可能清楚,如果你有问题,请问。

1 个答案:

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

参考: http://api.jquery.com/load/