jQuery:自动刷新`<div>`</div>

时间:2009-02-25 16:02:08

标签: php jquery codeigniter

我无法使用jQuery自动更新此<div>。它本质上是一个聊天功能,可以每两秒刷新一次页面。我已经尝试了几种差异而没有运气,因此完全重写它是非常受欢迎的。

jQuery代码

function updateChat() {
    $.get("chat_data.php", function(data) {
        $("div#chattable").html(data);
    });

    window.setTimeout("updateChat();", 2000);
}

$(document).ready(function() {
    updateChat();
});

以下是<div>代码,它从chat_data.php获取数据。这应该是更新:

<div id="chattable">
    <?php include("js/chat_data.php"); ?>
</div>

chat_data.php

<?php foreach($query->result() as $row):
    echo "<div class='chatrow'>";
    echo "<div class='chattime'>".date("[M.d] g:ia",strtotime($row->time))."</div>";
    echo "<div class='chatnamematch'>[".$row->name."]</div>";
    echo "<div class='chatbody'>".$row->body."</div>";
    echo "</div>";
endforeach; ?>

3 个答案:

答案 0 :(得分:2)

一切看起来都应该有效。 $ .get中的网址是否需要为“js / chat_data.php”而不是“chat_data.php”?

另外我会把div包含在div中,因为它只是通过AJAX加载。

答案 1 :(得分:2)

您获得的错误Call to a member function result() on a non-object in /var/www/js/chat_data.php on line 1表示未正确设置变量$query。你说你使用的是CodeIgniter,是这样,文件夹ajax_data.php位于哪个文件夹中?应用/控制器?

答案 2 :(得分:1)

一些想法和另一个代码示例。很难说出你的问题在哪里,所以这些只是一些想法。

  • 您可以将等待移动到PHP,而不是使用javascript计时器重新执行

  • 尝试使用更简单的jQuery.load()方法。

    function updateChat() {
    
     $("#chattable").load("chat_data.php", function() { updateChat(); });
    
    }
    

在PHP方面,

  sleep(2); // sleep for two seconds before returning output

效果类似,但稍微简化了一下。在返回输出之前,不会调用updateChat()函数。

嗯,只是一个想法。不确定它是否是正确的解决方案,但它可以帮助您隔离问题(取出js计时器变量)。