2010-03-16 72 views
0
$messages = $db->query("SELECT * FROM chatmessages ORDER BY datetime DESC, displayorderid DESC LIMIT 0,10"); 
while($message = $db->fetch_array($messages)) { 
    $oldmessages[] = $message['message']; 
} 
$oldmessages = array_reverse($oldmessages); 
?> 
<div id="chat"> 
<?php 
for ($count = 0; $count < 9; $count++) { 
    echo $oldmessages[$count]; 
} 
?> 
<script language="javascript" type="text/javascript"> 
<!-- 
setInterval("document.getElementById('chat').innerHTML='<NEW CONTENT OF #CHAT>'", 1000); 
--> 
</script> 
</div> 

我试图创建一个PHP脚本,聊天室,但我有很多的麻烦得到它的自动刷新如何自动使用AJAX自动刷新页面的一部分?

内容应自动更新,你怎么让它这样做吗?我一直在寻找近一个小时

+0

只是为了记录AJAX *是* JavaScript – 2010-03-16 21:58:04

回答

1

我会把你的PHP功能,并把它放在一个返回JSON的Sperate页面。从那里你可以使用jQuery和内置的AJAX工具调用该方法。非常简单。从这里开始jQuery:http://api.jquery.com/category/ajax/

+0

尽可能多的我喜欢JSON的工作,我发现很多主机和服务器没有启用PHP默认情况下( Espec作为JSON_FORCE_OBJECT常量在5.3之前并没有被添加,并且并不是每个人都已经升级),并且不喜欢启用它,所以我认为XML可能是更好的方法,直到它得到更广泛的支持。 – Psytronic 2010-03-16 22:02:30

+0

然后使用SOAP over JSON,无论使用哪种方式,您都希望使用某种异步方法来检索该数据。 – 2010-03-16 22:26:53

0

你需要设置一个服务器端脚本,只显示聊天div的内容并使用ajax来抓取它。它可以使用jQuery做很容易:

在HTML文档:

<head> 
... 
    <script src="/path/to/jquery.js" type="text/javascript"></script> 
    <script> 
     var chatUpdateInterval = null; 
     function initChat() { 
      chatUpdateInterval = window.setInterval(updateChat, 5000); /* every 5 seconds */ 
     } 
     function updateChat() { 
      $.ajax({ 
       url: '/url/path/to/your/script.php' 
       ,dataType: 'HTML' 
       ,success: function(data, status, xhr){ 
        $('#chat').append($(data).html()); 
       } 
      }); 
     } 
     $(document).ready(function(){ 
      initChat(); 
     }); 
    </script> 
... 
</head> 
<body> 
    <div id="chat"> 
     please stand by while we're firing up the coal! 
    </div> 
</body> 

请注意,这不会是真的很好,它只是一个样本,让你开始。你应该看看jQuery的$.ajax