我无法使用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; ?>
答案 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计时器变量)。