2012-03-22 99 views
1

你好,我有一个PHP的返回值传递给innerHTML方法,以固定的时间间隔更改我的div的值的麻烦。PHP返回值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>标签之外它做什么,它需要,但它不refrech每隔几秒钟预先

感谢我尽量让问题尽可能清楚,如果你有问题,只要问。

回答

1

我怀疑你的意思是“不起作用”,它只是把每秒钟都放在一起。这是因为PHP是在服务器端之前,浏览器获得的任何HTML运行,这使得代码看起来是这样的,当它到达浏览器:

var t = setInterval(function(){document. getElementById("content"). innerHTML = "whatever php produced";}, 1000); 

这意味着,您的浏览器将只放静态文本“任何PHP制作”到你的div每次间隔火灾。

要解决这个问题,您需要一个稍微不同的方法。使用AJAX从PHP脚本请求一个更新版本,该脚本只返回div内所支持的内容。如果你不熟悉AJAX,jQuery有一个功能可以为你做这件事。

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/

+0

感谢它的工作! – ex0b1t 2012-03-22 23:02:20