-1

我想要做的是让一个变量每 5 秒更新一次:

setInterval(document.getElementById("listeners").innerHTML = 
    "<?php include('../includes/shoutcaststuff.php');  
    echo $dnas_data['CURRENTLISTENERS']; ?>",5000);

但发生的是内部 html 已设置但不会像应有的那样每 5 秒更新一次。我的猜测是 php 只执行一次,但我不知道是不是这样。而且我知道我应该创建一个函数来执行 setInterval 中的内容...一旦我弄清楚如何使其工作,我将清理代码。提前致谢。

好的... ajax 是“最好的”答案,因为这里一次登录的人不超过 2 人,所以服务器请求没什么大不了的。这是我如何让它工作的:

function lCount(){
    $.get("../includes/shoutcaststuff.php",{Count: "TRUE"}, function(data){
        document.getElementById('listeners').innerHTML = data;
    }); 
}

setInterval(lCount,5000);

并将其添加到 php 的末尾:

if(isset($_GET["Count"])){
echo $dnas_data['CURRENTLISTENERS'];
}

现在它工作正常。

感谢您的建议:)

4

2 回答 2

0

PHP 代码在生成 HTML/JS 的服务器上运行。如果您需要在页面加载后运行 php 代码,请使用 ajax。

以这个为例;

使用这个:

setInterval(document.getElementById("listeners").innerHTML = 
"<?php echo "1";?>",5000);

将其输出到浏览器:

setInterval(document.getElementById("listeners").innerHTML = 
"1",5000);
于 2013-08-23T23:39:48.380 回答
0

<?php include('../includes/shoutcaststuff.php');
echo $dnas_data['CURRENTLISTENERS']; ?>

此代码仅在构建页面时执行一次。在剩下的时间里,这个 javascript 被称为任何第一次回显的值。

您将需要使用 ajax 请求(如果您想使用 html5,则需要使用 websocket),而不是在这里使用静态值。然后,该请求将每 5 秒访问一次您的服务器。请记住,这可能会导致服务器负载过重。

Ratchet是一种常用的 PHP WebSocket 实现,它允许使用推送技术将数据发送到客户端。这可能比使用您的轮询方法更可取。

于 2013-08-23T23:42:09.827 回答